@angular/compiler 19.0.0-next.0 → 19.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/fesm2022/compiler.mjs +4742 -4473
- package/fesm2022/compiler.mjs.map +1 -1
- package/index.d.ts +35 -3
- package/package.json +2 -4
- package/esm2022/compiler.mjs +0 -13
- package/esm2022/index.mjs +0 -13
- package/esm2022/public_api.mjs +0 -15
- package/esm2022/src/assertions.mjs +0 -31
- package/esm2022/src/chars.mjs +0 -90
- package/esm2022/src/compiler.mjs +0 -88
- package/esm2022/src/compiler_facade_interface.mjs +0 -29
- package/esm2022/src/config.mjs +0 -20
- package/esm2022/src/constant_pool.mjs +0 -285
- package/esm2022/src/core.mjs +0 -96
- package/esm2022/src/expression_parser/ast.mjs +0 -755
- package/esm2022/src/expression_parser/lexer.mjs +0 -421
- package/esm2022/src/expression_parser/parser.mjs +0 -1222
- package/esm2022/src/i18n/digest.mjs +0 -322
- package/esm2022/src/i18n/extractor_merger.mjs +0 -409
- package/esm2022/src/i18n/i18n_ast.mjs +0 -212
- package/esm2022/src/i18n/i18n_html_parser.mjs +0 -54
- package/esm2022/src/i18n/i18n_parser.mjs +0 -247
- package/esm2022/src/i18n/index.mjs +0 -16
- package/esm2022/src/i18n/message_bundle.mjs +0 -93
- package/esm2022/src/i18n/parse_util.mjs +0 -17
- package/esm2022/src/i18n/serializers/placeholder.mjs +0 -139
- package/esm2022/src/i18n/serializers/serializer.mjs +0 -77
- package/esm2022/src/i18n/serializers/xliff.mjs +0 -300
- package/esm2022/src/i18n/serializers/xliff2.mjs +0 -349
- package/esm2022/src/i18n/serializers/xmb.mjs +0 -188
- package/esm2022/src/i18n/serializers/xml_helper.mjs +0 -94
- package/esm2022/src/i18n/serializers/xtb.mjs +0 -186
- package/esm2022/src/i18n/translation_bundle.mjs +0 -164
- package/esm2022/src/injectable_compiler_2.mjs +0 -138
- package/esm2022/src/jit_compiler_facade.mjs +0 -681
- package/esm2022/src/ml_parser/ast.mjs +0 -167
- package/esm2022/src/ml_parser/defaults.mjs +0 -24
- package/esm2022/src/ml_parser/entities.mjs +0 -2144
- package/esm2022/src/ml_parser/html_parser.mjs +0 -18
- package/esm2022/src/ml_parser/html_tags.mjs +0 -156
- package/esm2022/src/ml_parser/html_whitespaces.mjs +0 -107
- package/esm2022/src/ml_parser/icu_ast_expander.mjs +0 -125
- package/esm2022/src/ml_parser/lexer.mjs +0 -1210
- package/esm2022/src/ml_parser/parser.mjs +0 -539
- package/esm2022/src/ml_parser/tags.mjs +0 -47
- package/esm2022/src/ml_parser/tokens.mjs +0 -9
- package/esm2022/src/ml_parser/xml_parser.mjs +0 -19
- package/esm2022/src/ml_parser/xml_tags.mjs +0 -32
- package/esm2022/src/output/abstract_emitter.mjs +0 -524
- package/esm2022/src/output/abstract_js_emitter.mjs +0 -130
- package/esm2022/src/output/map_util.mjs +0 -19
- package/esm2022/src/output/output_ast.mjs +0 -1301
- package/esm2022/src/output/output_jit.mjs +0 -138
- package/esm2022/src/output/output_jit_trusted_types.mjs +0 -100
- package/esm2022/src/output/source_map.mjs +0 -150
- package/esm2022/src/parse_util.mjs +0 -198
- package/esm2022/src/render3/partial/api.mjs +0 -9
- package/esm2022/src/render3/partial/class_metadata.mjs +0 -52
- package/esm2022/src/render3/partial/component.mjs +0 -197
- package/esm2022/src/render3/partial/directive.mjs +0 -264
- package/esm2022/src/render3/partial/factory.mjs +0 -35
- package/esm2022/src/render3/partial/injectable.mjs +0 -67
- package/esm2022/src/render3/partial/injector.mjs +0 -41
- package/esm2022/src/render3/partial/ng_module.mjs +0 -63
- package/esm2022/src/render3/partial/pipe.mjs +0 -50
- package/esm2022/src/render3/partial/util.mjs +0 -79
- package/esm2022/src/render3/r3_ast.mjs +0 -493
- package/esm2022/src/render3/r3_class_debug_info_compiler.mjs +0 -35
- package/esm2022/src/render3/r3_class_metadata_compiler.mjs +0 -92
- package/esm2022/src/render3/r3_control_flow.mjs +0 -421
- package/esm2022/src/render3/r3_deferred_blocks.mjs +0 -170
- package/esm2022/src/render3/r3_deferred_triggers.mjs +0 -316
- package/esm2022/src/render3/r3_factory.mjs +0 -200
- package/esm2022/src/render3/r3_identifiers.mjs +0 -480
- package/esm2022/src/render3/r3_injector_compiler.mjs +0 -28
- package/esm2022/src/render3/r3_jit.mjs +0 -29
- package/esm2022/src/render3/r3_module_compiler.mjs +0 -211
- package/esm2022/src/render3/r3_pipe_compiler.mjs +0 -35
- package/esm2022/src/render3/r3_template_transform.mjs +0 -560
- package/esm2022/src/render3/util.mjs +0 -90
- package/esm2022/src/render3/view/api.mjs +0 -14
- package/esm2022/src/render3/view/compiler.mjs +0 -546
- package/esm2022/src/render3/view/i18n/get_msg_utils.mjs +0 -113
- package/esm2022/src/render3/view/i18n/icu_serializer.mjs +0 -43
- package/esm2022/src/render3/view/i18n/localize_utils.mjs +0 -118
- package/esm2022/src/render3/view/i18n/meta.mjs +0 -259
- package/esm2022/src/render3/view/i18n/util.mjs +0 -70
- package/esm2022/src/render3/view/query_generation.mjs +0 -182
- package/esm2022/src/render3/view/t2_api.mjs +0 -9
- package/esm2022/src/render3/view/t2_binder.mjs +0 -823
- package/esm2022/src/render3/view/template.mjs +0 -113
- package/esm2022/src/render3/view/util.mjs +0 -192
- package/esm2022/src/resource_loader.mjs +0 -17
- package/esm2022/src/schema/dom_element_schema_registry.mjs +0 -471
- package/esm2022/src/schema/dom_security_schema.mjs +0 -96
- package/esm2022/src/schema/element_schema_registry.mjs +0 -10
- package/esm2022/src/schema/trusted_types_sinks.mjs +0 -41
- package/esm2022/src/selector.mjs +0 -400
- package/esm2022/src/shadow_css.mjs +0 -1053
- package/esm2022/src/style_url_resolver.mjs +0 -17
- package/esm2022/src/template/pipeline/ir/index.mjs +0 -18
- package/esm2022/src/template/pipeline/ir/src/enums.mjs +0 -503
- package/esm2022/src/template/pipeline/ir/src/expression.mjs +0 -997
- package/esm2022/src/template/pipeline/ir/src/handle.mjs +0 -13
- package/esm2022/src/template/pipeline/ir/src/operations.mjs +0 -261
- package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +0 -405
- package/esm2022/src/template/pipeline/ir/src/ops/host.mjs +0 -25
- package/esm2022/src/template/pipeline/ir/src/ops/shared.mjs +0 -43
- package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +0 -277
- package/esm2022/src/template/pipeline/ir/src/traits.mjs +0 -64
- package/esm2022/src/template/pipeline/ir/src/variable.mjs +0 -13
- package/esm2022/src/template/pipeline/src/compilation.mjs +0 -194
- package/esm2022/src/template/pipeline/src/conversion.mjs +0 -64
- package/esm2022/src/template/pipeline/src/emit.mjs +0 -238
- package/esm2022/src/template/pipeline/src/ingest.mjs +0 -1058
- package/esm2022/src/template/pipeline/src/instruction.mjs +0 -564
- package/esm2022/src/template/pipeline/src/phases/any_cast.mjs +0 -32
- package/esm2022/src/template/pipeline/src/phases/apply_i18n_expressions.mjs +0 -63
- package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +0 -63
- package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +0 -138
- package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +0 -75
- package/esm2022/src/template/pipeline/src/phases/chaining.mjs +0 -112
- package/esm2022/src/template/pipeline/src/phases/collapse_singleton_interpolations.mjs +0 -32
- package/esm2022/src/template/pipeline/src/phases/conditionals.mjs +0 -58
- package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +0 -214
- package/esm2022/src/template/pipeline/src/phases/convert_i18n_bindings.mjs +0 -52
- package/esm2022/src/template/pipeline/src/phases/create_i18n_contexts.mjs +0 -105
- package/esm2022/src/template/pipeline/src/phases/deduplicate_text_bindings.mjs +0 -40
- package/esm2022/src/template/pipeline/src/phases/defer_configs.mjs +0 -29
- package/esm2022/src/template/pipeline/src/phases/defer_resolve_targets.mjs +0 -113
- package/esm2022/src/template/pipeline/src/phases/empty_elements.mjs +0 -47
- package/esm2022/src/template/pipeline/src/phases/expand_safe_reads.mjs +0 -192
- package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +0 -218
- package/esm2022/src/template/pipeline/src/phases/generate_advance.mjs +0 -66
- package/esm2022/src/template/pipeline/src/phases/generate_local_let_references.mjs +0 -29
- package/esm2022/src/template/pipeline/src/phases/generate_projection_def.mjs +0 -46
- package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +0 -170
- package/esm2022/src/template/pipeline/src/phases/has_const_expression_collection.mjs +0 -28
- package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +0 -81
- package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +0 -309
- package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +0 -97
- package/esm2022/src/template/pipeline/src/phases/local_refs.mjs +0 -43
- package/esm2022/src/template/pipeline/src/phases/namespace.mjs +0 -26
- package/esm2022/src/template/pipeline/src/phases/naming.mjs +0 -179
- package/esm2022/src/template/pipeline/src/phases/next_context_merging.mjs +0 -75
- package/esm2022/src/template/pipeline/src/phases/ng_container.mjs +0 -29
- package/esm2022/src/template/pipeline/src/phases/nonbindable.mjs +0 -47
- package/esm2022/src/template/pipeline/src/phases/nullish_coalescing.mjs +0 -33
- package/esm2022/src/template/pipeline/src/phases/ordering.mjs +0 -140
- package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +0 -137
- package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +0 -42
- package/esm2022/src/template/pipeline/src/phases/pipe_creation.mjs +0 -74
- package/esm2022/src/template/pipeline/src/phases/pipe_variadic.mjs +0 -30
- package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +0 -81
- package/esm2022/src/template/pipeline/src/phases/pure_function_extraction.mjs +0 -55
- package/esm2022/src/template/pipeline/src/phases/pure_literal_structures.mjs +0 -58
- package/esm2022/src/template/pipeline/src/phases/reify.mjs +0 -433
- package/esm2022/src/template/pipeline/src/phases/remove_empty_bindings.mjs +0 -31
- package/esm2022/src/template/pipeline/src/phases/remove_i18n_contexts.mjs +0 -27
- package/esm2022/src/template/pipeline/src/phases/remove_illegal_let_references.mjs +0 -36
- package/esm2022/src/template/pipeline/src/phases/remove_unused_i18n_attrs.mjs +0 -33
- package/esm2022/src/template/pipeline/src/phases/resolve_contexts.mjs +0 -60
- package/esm2022/src/template/pipeline/src/phases/resolve_defer_deps_fns.mjs +0 -31
- package/esm2022/src/template/pipeline/src/phases/resolve_dollar_event.mjs +0 -36
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +0 -266
- package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +0 -70
- package/esm2022/src/template/pipeline/src/phases/resolve_names.mjs +0 -124
- package/esm2022/src/template/pipeline/src/phases/resolve_sanitizers.mjs +0 -123
- package/esm2022/src/template/pipeline/src/phases/save_restore_view.mjs +0 -64
- package/esm2022/src/template/pipeline/src/phases/slot_allocation.mjs +0 -62
- package/esm2022/src/template/pipeline/src/phases/store_let_optimization.mjs +0 -35
- package/esm2022/src/template/pipeline/src/phases/style_binding_specialization.mjs +0 -42
- package/esm2022/src/template/pipeline/src/phases/temporary_variables.mjs +0 -87
- package/esm2022/src/template/pipeline/src/phases/track_fn_generation.mjs +0 -52
- package/esm2022/src/template/pipeline/src/phases/track_fn_optimization.mjs +0 -88
- package/esm2022/src/template/pipeline/src/phases/track_variables.mjs +0 -36
- package/esm2022/src/template/pipeline/src/phases/transform_two_way_binding_set.mjs +0 -43
- package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +0 -155
- package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +0 -423
- package/esm2022/src/template/pipeline/src/phases/wrap_icus.mjs +0 -41
- package/esm2022/src/template/pipeline/src/util/elements.mjs +0 -29
- package/esm2022/src/template_parser/binding_parser.mjs +0 -465
- package/esm2022/src/template_parser/template_preparser.mjs +0 -84
- package/esm2022/src/util.mjs +0 -124
- package/esm2022/src/version.mjs +0 -15
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { toPublicName } from '../../../i18n/serializers/xmb';
|
|
2
|
-
import * as o from '../../../output/output_ast';
|
|
3
|
-
/** Name of the i18n attributes **/
|
|
4
|
-
export const I18N_ATTR = 'i18n';
|
|
5
|
-
export const I18N_ATTR_PREFIX = 'i18n-';
|
|
6
|
-
/** Prefix of var expressions used in ICUs */
|
|
7
|
-
export const I18N_ICU_VAR_PREFIX = 'VAR_';
|
|
8
|
-
export function isI18nAttribute(name) {
|
|
9
|
-
return name === I18N_ATTR || name.startsWith(I18N_ATTR_PREFIX);
|
|
10
|
-
}
|
|
11
|
-
export function hasI18nAttrs(element) {
|
|
12
|
-
return element.attrs.some((attr) => isI18nAttribute(attr.name));
|
|
13
|
-
}
|
|
14
|
-
export function icuFromI18nMessage(message) {
|
|
15
|
-
return message.nodes[0];
|
|
16
|
-
}
|
|
17
|
-
export function placeholdersToParams(placeholders) {
|
|
18
|
-
const params = {};
|
|
19
|
-
placeholders.forEach((values, key) => {
|
|
20
|
-
params[key] = o.literal(values.length > 1 ? `[${values.join('|')}]` : values[0]);
|
|
21
|
-
});
|
|
22
|
-
return params;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Format the placeholder names in a map of placeholders to expressions.
|
|
26
|
-
*
|
|
27
|
-
* The placeholder names are converted from "internal" format (e.g. `START_TAG_DIV_1`) to "external"
|
|
28
|
-
* format (e.g. `startTagDiv_1`).
|
|
29
|
-
*
|
|
30
|
-
* @param params A map of placeholder names to expressions.
|
|
31
|
-
* @param useCamelCase whether to camelCase the placeholder name when formatting.
|
|
32
|
-
* @returns A new map of formatted placeholder names to expressions.
|
|
33
|
-
*/
|
|
34
|
-
export function formatI18nPlaceholderNamesInMap(params = {}, useCamelCase) {
|
|
35
|
-
const _params = {};
|
|
36
|
-
if (params && Object.keys(params).length) {
|
|
37
|
-
Object.keys(params).forEach((key) => (_params[formatI18nPlaceholderName(key, useCamelCase)] = params[key]));
|
|
38
|
-
}
|
|
39
|
-
return _params;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Converts internal placeholder names to public-facing format
|
|
43
|
-
* (for example to use in goog.getMsg call).
|
|
44
|
-
* Example: `START_TAG_DIV_1` is converted to `startTagDiv_1`.
|
|
45
|
-
*
|
|
46
|
-
* @param name The placeholder name that should be formatted
|
|
47
|
-
* @returns Formatted placeholder name
|
|
48
|
-
*/
|
|
49
|
-
export function formatI18nPlaceholderName(name, useCamelCase = true) {
|
|
50
|
-
const publicName = toPublicName(name);
|
|
51
|
-
if (!useCamelCase) {
|
|
52
|
-
return publicName;
|
|
53
|
-
}
|
|
54
|
-
const chunks = publicName.split('_');
|
|
55
|
-
if (chunks.length === 1) {
|
|
56
|
-
// if no "_" found - just lowercase the value
|
|
57
|
-
return name.toLowerCase();
|
|
58
|
-
}
|
|
59
|
-
let postfix;
|
|
60
|
-
// eject last element if it's a number
|
|
61
|
-
if (/^\d+$/.test(chunks[chunks.length - 1])) {
|
|
62
|
-
postfix = chunks.pop();
|
|
63
|
-
}
|
|
64
|
-
let raw = chunks.shift().toLowerCase();
|
|
65
|
-
if (chunks.length) {
|
|
66
|
-
raw += chunks.map((c) => c.charAt(0).toUpperCase() + c.slice(1).toLowerCase()).join('');
|
|
67
|
-
}
|
|
68
|
-
return postfix ? `${raw}_${postfix}` : raw;
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9yZW5kZXIzL3ZpZXcvaTE4bi91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEtBQUssQ0FBQyxNQUFNLDRCQUE0QixDQUFDO0FBRWhELG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztBQUV4Qyw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDO0FBRTFDLE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBWTtJQUMxQyxPQUFPLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQXFCO0lBQ2hELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEYsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFxQjtJQUN0RCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUF3QixDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsWUFBbUM7SUFHdEUsTUFBTSxNQUFNLEdBQW9DLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZ0IsRUFBRSxHQUFXLEVBQUUsRUFBRTtRQUNyRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25GLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSwrQkFBK0IsQ0FDN0MsU0FBeUMsRUFBRSxFQUMzQyxZQUFxQjtJQUVyQixNQUFNLE9BQU8sR0FBa0MsRUFBRSxDQUFDO0lBQ2xELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQ3pCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDL0UsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxJQUFZLEVBQUUsZUFBd0IsSUFBSTtJQUNsRixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4Qiw2Q0FBNkM7UUFDN0MsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDO0lBQ1osc0NBQXNDO0lBQ3RDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIGkxOG4gZnJvbSAnLi4vLi4vLi4vaTE4bi9pMThuX2FzdCc7XG5pbXBvcnQge3RvUHVibGljTmFtZX0gZnJvbSAnLi4vLi4vLi4vaTE4bi9zZXJpYWxpemVycy94bWInO1xuaW1wb3J0ICogYXMgaHRtbCBmcm9tICcuLi8uLi8uLi9tbF9wYXJzZXIvYXN0JztcbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuXG4vKiogTmFtZSBvZiB0aGUgaTE4biBhdHRyaWJ1dGVzICoqL1xuZXhwb3J0IGNvbnN0IEkxOE5fQVRUUiA9ICdpMThuJztcbmV4cG9ydCBjb25zdCBJMThOX0FUVFJfUFJFRklYID0gJ2kxOG4tJztcblxuLyoqIFByZWZpeCBvZiB2YXIgZXhwcmVzc2lvbnMgdXNlZCBpbiBJQ1VzICovXG5leHBvcnQgY29uc3QgSTE4Tl9JQ1VfVkFSX1BSRUZJWCA9ICdWQVJfJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzSTE4bkF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIG5hbWUgPT09IEkxOE5fQVRUUiB8fCBuYW1lLnN0YXJ0c1dpdGgoSTE4Tl9BVFRSX1BSRUZJWCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNJMThuQXR0cnMoZWxlbWVudDogaHRtbC5FbGVtZW50KTogYm9vbGVhbiB7XG4gIHJldHVybiBlbGVtZW50LmF0dHJzLnNvbWUoKGF0dHI6IGh0bWwuQXR0cmlidXRlKSA9PiBpc0kxOG5BdHRyaWJ1dGUoYXR0ci5uYW1lKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpY3VGcm9tSTE4bk1lc3NhZ2UobWVzc2FnZTogaTE4bi5NZXNzYWdlKSB7XG4gIHJldHVybiBtZXNzYWdlLm5vZGVzWzBdIGFzIGkxOG4uSWN1UGxhY2Vob2xkZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwbGFjZWhvbGRlcnNUb1BhcmFtcyhwbGFjZWhvbGRlcnM6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPik6IHtcbiAgW25hbWU6IHN0cmluZ106IG8uTGl0ZXJhbEV4cHI7XG59IHtcbiAgY29uc3QgcGFyYW1zOiB7W25hbWU6IHN0cmluZ106IG8uTGl0ZXJhbEV4cHJ9ID0ge307XG4gIHBsYWNlaG9sZGVycy5mb3JFYWNoKCh2YWx1ZXM6IHN0cmluZ1tdLCBrZXk6IHN0cmluZykgPT4ge1xuICAgIHBhcmFtc1trZXldID0gby5saXRlcmFsKHZhbHVlcy5sZW5ndGggPiAxID8gYFske3ZhbHVlcy5qb2luKCd8Jyl9XWAgOiB2YWx1ZXNbMF0pO1xuICB9KTtcbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuLyoqXG4gKiBGb3JtYXQgdGhlIHBsYWNlaG9sZGVyIG5hbWVzIGluIGEgbWFwIG9mIHBsYWNlaG9sZGVycyB0byBleHByZXNzaW9ucy5cbiAqXG4gKiBUaGUgcGxhY2Vob2xkZXIgbmFtZXMgYXJlIGNvbnZlcnRlZCBmcm9tIFwiaW50ZXJuYWxcIiBmb3JtYXQgKGUuZy4gYFNUQVJUX1RBR19ESVZfMWApIHRvIFwiZXh0ZXJuYWxcIlxuICogZm9ybWF0IChlLmcuIGBzdGFydFRhZ0Rpdl8xYCkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyBBIG1hcCBvZiBwbGFjZWhvbGRlciBuYW1lcyB0byBleHByZXNzaW9ucy5cbiAqIEBwYXJhbSB1c2VDYW1lbENhc2Ugd2hldGhlciB0byBjYW1lbENhc2UgdGhlIHBsYWNlaG9sZGVyIG5hbWUgd2hlbiBmb3JtYXR0aW5nLlxuICogQHJldHVybnMgQSBuZXcgbWFwIG9mIGZvcm1hdHRlZCBwbGFjZWhvbGRlciBuYW1lcyB0byBleHByZXNzaW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEkxOG5QbGFjZWhvbGRlck5hbWVzSW5NYXAoXG4gIHBhcmFtczoge1tuYW1lOiBzdHJpbmddOiBvLkV4cHJlc3Npb259ID0ge30sXG4gIHVzZUNhbWVsQ2FzZTogYm9vbGVhbixcbikge1xuICBjb25zdCBfcGFyYW1zOiB7W2tleTogc3RyaW5nXTogby5FeHByZXNzaW9ufSA9IHt9O1xuICBpZiAocGFyYW1zICYmIE9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoKSB7XG4gICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKFxuICAgICAgKGtleSkgPT4gKF9wYXJhbXNbZm9ybWF0STE4blBsYWNlaG9sZGVyTmFtZShrZXksIHVzZUNhbWVsQ2FzZSldID0gcGFyYW1zW2tleV0pLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIF9wYXJhbXM7XG59XG5cbi8qKlxuICogQ29udmVydHMgaW50ZXJuYWwgcGxhY2Vob2xkZXIgbmFtZXMgdG8gcHVibGljLWZhY2luZyBmb3JtYXRcbiAqIChmb3IgZXhhbXBsZSB0byB1c2UgaW4gZ29vZy5nZXRNc2cgY2FsbCkuXG4gKiBFeGFtcGxlOiBgU1RBUlRfVEFHX0RJVl8xYCBpcyBjb252ZXJ0ZWQgdG8gYHN0YXJ0VGFnRGl2XzFgLlxuICpcbiAqIEBwYXJhbSBuYW1lIFRoZSBwbGFjZWhvbGRlciBuYW1lIHRoYXQgc2hvdWxkIGJlIGZvcm1hdHRlZFxuICogQHJldHVybnMgRm9ybWF0dGVkIHBsYWNlaG9sZGVyIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEkxOG5QbGFjZWhvbGRlck5hbWUobmFtZTogc3RyaW5nLCB1c2VDYW1lbENhc2U6IGJvb2xlYW4gPSB0cnVlKTogc3RyaW5nIHtcbiAgY29uc3QgcHVibGljTmFtZSA9IHRvUHVibGljTmFtZShuYW1lKTtcbiAgaWYgKCF1c2VDYW1lbENhc2UpIHtcbiAgICByZXR1cm4gcHVibGljTmFtZTtcbiAgfVxuICBjb25zdCBjaHVua3MgPSBwdWJsaWNOYW1lLnNwbGl0KCdfJyk7XG4gIGlmIChjaHVua3MubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gaWYgbm8gXCJfXCIgZm91bmQgLSBqdXN0IGxvd2VyY2FzZSB0aGUgdmFsdWVcbiAgICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIGxldCBwb3N0Zml4O1xuICAvLyBlamVjdCBsYXN0IGVsZW1lbnQgaWYgaXQncyBhIG51bWJlclxuICBpZiAoL15cXGQrJC8udGVzdChjaHVua3NbY2h1bmtzLmxlbmd0aCAtIDFdKSkge1xuICAgIHBvc3RmaXggPSBjaHVua3MucG9wKCk7XG4gIH1cbiAgbGV0IHJhdyA9IGNodW5rcy5zaGlmdCgpIS50b0xvd2VyQ2FzZSgpO1xuICBpZiAoY2h1bmtzLmxlbmd0aCkge1xuICAgIHJhdyArPSBjaHVua3MubWFwKChjKSA9PiBjLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgYy5zbGljZSgxKS50b0xvd2VyQ2FzZSgpKS5qb2luKCcnKTtcbiAgfVxuICByZXR1cm4gcG9zdGZpeCA/IGAke3Jhd31fJHtwb3N0Zml4fWAgOiByYXc7XG59XG4iXX0=
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import * as o from '../../output/output_ast';
|
|
9
|
-
import { Identifiers as R3 } from '../r3_identifiers';
|
|
10
|
-
import { CONTEXT_NAME, RENDER_FLAGS, TEMPORARY_NAME, temporaryAllocator } from './util';
|
|
11
|
-
// if (rf & flags) { .. }
|
|
12
|
-
function renderFlagCheckIfStmt(flags, statements) {
|
|
13
|
-
return o.ifStmt(o.variable(RENDER_FLAGS).bitwiseAnd(o.literal(flags), null, false), statements);
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Translates query flags into `TQueryFlags` type in
|
|
17
|
-
* packages/core/src/render3/interfaces/query.ts
|
|
18
|
-
* @param query
|
|
19
|
-
*/
|
|
20
|
-
function toQueryFlags(query) {
|
|
21
|
-
return ((query.descendants ? 1 /* QueryFlags.descendants */ : 0 /* QueryFlags.none */) |
|
|
22
|
-
(query.static ? 2 /* QueryFlags.isStatic */ : 0 /* QueryFlags.none */) |
|
|
23
|
-
(query.emitDistinctChangesOnly ? 4 /* QueryFlags.emitDistinctChangesOnly */ : 0 /* QueryFlags.none */));
|
|
24
|
-
}
|
|
25
|
-
export function getQueryPredicate(query, constantPool) {
|
|
26
|
-
if (Array.isArray(query.predicate)) {
|
|
27
|
-
let predicate = [];
|
|
28
|
-
query.predicate.forEach((selector) => {
|
|
29
|
-
// Each item in predicates array may contain strings with comma-separated refs
|
|
30
|
-
// (for ex. 'ref, ref1, ..., refN'), thus we extract individual refs and store them
|
|
31
|
-
// as separate array entities
|
|
32
|
-
const selectors = selector.split(',').map((token) => o.literal(token.trim()));
|
|
33
|
-
predicate.push(...selectors);
|
|
34
|
-
});
|
|
35
|
-
return constantPool.getConstLiteral(o.literalArr(predicate), true);
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
// The original predicate may have been wrapped in a `forwardRef()` call.
|
|
39
|
-
switch (query.predicate.forwardRef) {
|
|
40
|
-
case 0 /* ForwardRefHandling.None */:
|
|
41
|
-
case 2 /* ForwardRefHandling.Unwrapped */:
|
|
42
|
-
return query.predicate.expression;
|
|
43
|
-
case 1 /* ForwardRefHandling.Wrapped */:
|
|
44
|
-
return o.importExpr(R3.resolveForwardRef).callFn([query.predicate.expression]);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export function createQueryCreateCall(query, constantPool, queryTypeFns, prependParams) {
|
|
49
|
-
const parameters = [];
|
|
50
|
-
if (prependParams !== undefined) {
|
|
51
|
-
parameters.push(...prependParams);
|
|
52
|
-
}
|
|
53
|
-
if (query.isSignal) {
|
|
54
|
-
parameters.push(new o.ReadPropExpr(o.variable(CONTEXT_NAME), query.propertyName));
|
|
55
|
-
}
|
|
56
|
-
parameters.push(getQueryPredicate(query, constantPool), o.literal(toQueryFlags(query)));
|
|
57
|
-
if (query.read) {
|
|
58
|
-
parameters.push(query.read);
|
|
59
|
-
}
|
|
60
|
-
const queryCreateFn = query.isSignal ? queryTypeFns.signalBased : queryTypeFns.nonSignal;
|
|
61
|
-
return o.importExpr(queryCreateFn).callFn(parameters);
|
|
62
|
-
}
|
|
63
|
-
const queryAdvancePlaceholder = Symbol('queryAdvancePlaceholder');
|
|
64
|
-
/**
|
|
65
|
-
* Collapses query advance placeholders in a list of statements.
|
|
66
|
-
*
|
|
67
|
-
* This allows for less generated code because multiple sibling query advance
|
|
68
|
-
* statements can be collapsed into a single call with the count as argument.
|
|
69
|
-
*
|
|
70
|
-
* e.g.
|
|
71
|
-
*
|
|
72
|
-
* ```ts
|
|
73
|
-
* bla();
|
|
74
|
-
* queryAdvance();
|
|
75
|
-
* queryAdvance();
|
|
76
|
-
* bla();
|
|
77
|
-
* ```
|
|
78
|
-
*
|
|
79
|
-
* --> will turn into
|
|
80
|
-
*
|
|
81
|
-
* ```
|
|
82
|
-
* bla();
|
|
83
|
-
* queryAdvance(2);
|
|
84
|
-
* bla();
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
function collapseAdvanceStatements(statements) {
|
|
88
|
-
const result = [];
|
|
89
|
-
let advanceCollapseCount = 0;
|
|
90
|
-
const flushAdvanceCount = () => {
|
|
91
|
-
if (advanceCollapseCount > 0) {
|
|
92
|
-
result.unshift(o
|
|
93
|
-
.importExpr(R3.queryAdvance)
|
|
94
|
-
.callFn(advanceCollapseCount === 1 ? [] : [o.literal(advanceCollapseCount)])
|
|
95
|
-
.toStmt());
|
|
96
|
-
advanceCollapseCount = 0;
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
// Iterate through statements in reverse and collapse advance placeholders.
|
|
100
|
-
for (let i = statements.length - 1; i >= 0; i--) {
|
|
101
|
-
const st = statements[i];
|
|
102
|
-
if (st === queryAdvancePlaceholder) {
|
|
103
|
-
advanceCollapseCount++;
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
flushAdvanceCount();
|
|
107
|
-
result.unshift(st);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
flushAdvanceCount();
|
|
111
|
-
return result;
|
|
112
|
-
}
|
|
113
|
-
// Define and update any view queries
|
|
114
|
-
export function createViewQueriesFunction(viewQueries, constantPool, name) {
|
|
115
|
-
const createStatements = [];
|
|
116
|
-
const updateStatements = [];
|
|
117
|
-
const tempAllocator = temporaryAllocator((st) => updateStatements.push(st), TEMPORARY_NAME);
|
|
118
|
-
viewQueries.forEach((query) => {
|
|
119
|
-
// creation call, e.g. r3.viewQuery(somePredicate, true) or
|
|
120
|
-
// r3.viewQuerySignal(ctx.prop, somePredicate, true);
|
|
121
|
-
const queryDefinitionCall = createQueryCreateCall(query, constantPool, {
|
|
122
|
-
signalBased: R3.viewQuerySignal,
|
|
123
|
-
nonSignal: R3.viewQuery,
|
|
124
|
-
});
|
|
125
|
-
createStatements.push(queryDefinitionCall.toStmt());
|
|
126
|
-
// Signal queries update lazily and we just advance the index.
|
|
127
|
-
if (query.isSignal) {
|
|
128
|
-
updateStatements.push(queryAdvancePlaceholder);
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
// update, e.g. (r3.queryRefresh(tmp = r3.loadQuery()) && (ctx.someDir = tmp));
|
|
132
|
-
const temporary = tempAllocator();
|
|
133
|
-
const getQueryList = o.importExpr(R3.loadQuery).callFn([]);
|
|
134
|
-
const refresh = o.importExpr(R3.queryRefresh).callFn([temporary.set(getQueryList)]);
|
|
135
|
-
const updateDirective = o
|
|
136
|
-
.variable(CONTEXT_NAME)
|
|
137
|
-
.prop(query.propertyName)
|
|
138
|
-
.set(query.first ? temporary.prop('first') : temporary);
|
|
139
|
-
updateStatements.push(refresh.and(updateDirective).toStmt());
|
|
140
|
-
});
|
|
141
|
-
const viewQueryFnName = name ? `${name}_Query` : null;
|
|
142
|
-
return o.fn([new o.FnParam(RENDER_FLAGS, o.NUMBER_TYPE), new o.FnParam(CONTEXT_NAME, null)], [
|
|
143
|
-
renderFlagCheckIfStmt(1 /* core.RenderFlags.Create */, createStatements),
|
|
144
|
-
renderFlagCheckIfStmt(2 /* core.RenderFlags.Update */, collapseAdvanceStatements(updateStatements)),
|
|
145
|
-
], o.INFERRED_TYPE, null, viewQueryFnName);
|
|
146
|
-
}
|
|
147
|
-
// Define and update any content queries
|
|
148
|
-
export function createContentQueriesFunction(queries, constantPool, name) {
|
|
149
|
-
const createStatements = [];
|
|
150
|
-
const updateStatements = [];
|
|
151
|
-
const tempAllocator = temporaryAllocator((st) => updateStatements.push(st), TEMPORARY_NAME);
|
|
152
|
-
for (const query of queries) {
|
|
153
|
-
// creation, e.g. r3.contentQuery(dirIndex, somePredicate, true, null) or
|
|
154
|
-
// r3.contentQuerySignal(dirIndex, propName, somePredicate, <flags>, <read>).
|
|
155
|
-
createStatements.push(createQueryCreateCall(query, constantPool, { nonSignal: R3.contentQuery, signalBased: R3.contentQuerySignal },
|
|
156
|
-
/* prependParams */ [o.variable('dirIndex')]).toStmt());
|
|
157
|
-
// Signal queries update lazily and we just advance the index.
|
|
158
|
-
if (query.isSignal) {
|
|
159
|
-
updateStatements.push(queryAdvancePlaceholder);
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
// update, e.g. (r3.queryRefresh(tmp = r3.loadQuery()) && (ctx.someDir = tmp));
|
|
163
|
-
const temporary = tempAllocator();
|
|
164
|
-
const getQueryList = o.importExpr(R3.loadQuery).callFn([]);
|
|
165
|
-
const refresh = o.importExpr(R3.queryRefresh).callFn([temporary.set(getQueryList)]);
|
|
166
|
-
const updateDirective = o
|
|
167
|
-
.variable(CONTEXT_NAME)
|
|
168
|
-
.prop(query.propertyName)
|
|
169
|
-
.set(query.first ? temporary.prop('first') : temporary);
|
|
170
|
-
updateStatements.push(refresh.and(updateDirective).toStmt());
|
|
171
|
-
}
|
|
172
|
-
const contentQueriesFnName = name ? `${name}_ContentQueries` : null;
|
|
173
|
-
return o.fn([
|
|
174
|
-
new o.FnParam(RENDER_FLAGS, o.NUMBER_TYPE),
|
|
175
|
-
new o.FnParam(CONTEXT_NAME, null),
|
|
176
|
-
new o.FnParam('dirIndex', null),
|
|
177
|
-
], [
|
|
178
|
-
renderFlagCheckIfStmt(1 /* core.RenderFlags.Create */, createStatements),
|
|
179
|
-
renderFlagCheckIfStmt(2 /* core.RenderFlags.Update */, collapseAdvanceStatements(updateStatements)),
|
|
180
|
-
], o.INFERRED_TYPE, null, contentQueriesFnName);
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnlfZ2VuZXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy9yZW5kZXIzL3ZpZXcvcXVlcnlfZ2VuZXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFJSCxPQUFPLEtBQUssQ0FBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLElBQUksRUFBRSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFJcEQsT0FBTyxFQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXRGLDBCQUEwQjtBQUMxQixTQUFTLHFCQUFxQixDQUFDLEtBQXVCLEVBQUUsVUFBeUI7SUFDL0UsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQ2xHLENBQUM7QUFpQ0Q7Ozs7R0FJRztBQUNILFNBQVMsWUFBWSxDQUFDLEtBQXNCO0lBQzFDLE9BQU8sQ0FDTCxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQ0FBd0IsQ0FBQyx3QkFBZ0IsQ0FBQztRQUM5RCxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyw2QkFBcUIsQ0FBQyx3QkFBZ0IsQ0FBQztRQUN0RCxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLDRDQUFvQyxDQUFDLHdCQUFnQixDQUFDLENBQ3ZGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixLQUFzQixFQUN0QixZQUEwQjtJQUUxQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FB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QUFVLEVBQUUsSUFBSSxDQUFDO0tBQ2hDLEVBQ0Q7UUFDRSxxQkFBcUIsa0NBQTBCLGdCQUFnQixDQUFDO1FBQ2hFLHFCQUFxQixrQ0FBMEIseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUM1RixFQUNELENBQUMsQ0FBQyxhQUFhLEVBQ2YsSUFBSSxFQUNKLG9CQUFvQixDQUNyQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0NvbnN0YW50UG9vbH0gZnJvbSAnLi4vLi4vY29uc3RhbnRfcG9vbCc7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQge0lkZW50aWZpZXJzIGFzIFIzfSBmcm9tICcuLi9yM19pZGVudGlmaWVycyc7XG5pbXBvcnQge0ZvcndhcmRSZWZIYW5kbGluZ30gZnJvbSAnLi4vdXRpbCc7XG5cbmltcG9ydCB7UjNRdWVyeU1ldGFkYXRhfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQge0NPTlRFWFRfTkFNRSwgUkVOREVSX0ZMQUdTLCBURU1QT1JBUllfTkFNRSwgdGVtcG9yYXJ5QWxsb2NhdG9yfSBmcm9tICcuL3V0aWwnO1xuXG4vLyAgaWYgKHJmICYgZmxhZ3MpIHsgLi4gfVxuZnVuY3Rpb24gcmVuZGVyRmxhZ0NoZWNrSWZTdG10KGZsYWdzOiBjb3JlLlJlbmRlckZsYWdzLCBzdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdKTogby5JZlN0bXQge1xuICByZXR1cm4gby5pZlN0bXQoby52YXJpYWJsZShSRU5ERVJfRkxBR1MpLmJpdHdpc2VBbmQoby5saXRlcmFsKGZsYWdzKSwgbnVsbCwgZmFsc2UpLCBzdGF0ZW1lbnRzKTtcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBmbGFncyB0byBiZSB1c2VkIHdpdGggUXVlcmllcy5cbiAqXG4gKiBOT1RFOiBFbnN1cmUgY2hhbmdlcyBoZXJlIGFyZSBpbiBzeW5jIHdpdGggYHBhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvaW50ZXJmYWNlcy9xdWVyeS50c2BcbiAqL1xuZXhwb3J0IGNvbnN0IGVudW0gUXVlcnlGbGFncyB7XG4gIC8qKlxuICAgKiBObyBmbGFnc1xuICAgKi9cbiAgbm9uZSA9IDBiMDAwMCxcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHF1ZXJ5IHNob3VsZCBkZXNjZW5kIGludG8gY2hpbGRyZW4uXG4gICAqL1xuICBkZXNjZW5kYW50cyA9IDBiMDAwMSxcblxuICAvKipcbiAgICogVGhlIHF1ZXJ5IGNhbiBiZSBjb21wdXRlZCBzdGF0aWNhbGx5IGFuZCBoZW5jZSBjYW4gYmUgYXNzaWduZWQgZWFnZXJseS5cbiAgICpcbiAgICogTk9URTogQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBWaWV3RW5naW5lLlxuICAgKi9cbiAgaXNTdGF0aWMgPSAwYjAwMTAsXG5cbiAgLyoqXG4gICAqIElmIHRoZSBgUXVlcnlMaXN0YCBzaG91bGQgZmlyZSBjaGFuZ2UgZXZlbnQgb25seSBpZiBhY3R1YWwgY2hhbmdlIHRvIHF1ZXJ5IHdhcyBjb21wdXRlZCAodnMgb2xkXG4gICAqIGJlaGF2aW9yIHdoZXJlIHRoZSBjaGFuZ2Ugd2FzIGZpcmVkIHdoZW5ldmVyIHRoZSBxdWVyeSB3YXMgcmVjb21wdXRlZCwgZXZlbiBpZiB0aGUgcmVjb21wdXRlZFxuICAgKiBxdWVyeSByZXN1bHRlZCBpbiB0aGUgc2FtZSBsaXN0LilcbiAgICovXG4gIGVtaXREaXN0aW5jdENoYW5nZXNPbmx5ID0gMGIwMTAwLFxufVxuXG4vKipcbiAqIFRyYW5zbGF0ZXMgcXVlcnkgZmxhZ3MgaW50byBgVFF1ZXJ5RmxhZ3NgIHR5cGUgaW5cbiAqIHBhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvaW50ZXJmYWNlcy9xdWVyeS50c1xuICogQHBhcmFtIHF1ZXJ5XG4gKi9cbmZ1bmN0aW9uIHRvUXVlcnlGbGFncyhxdWVyeTogUjNRdWVyeU1ldGFkYXRhKTogbnVtYmVyIHtcbiAgcmV0dXJuIChcbiAgICAocXVlcnkuZGVzY2VuZGFudHMgPyBRdWVyeUZsYWdzLmRlc2NlbmRhbnRzIDogUXVlcnlGbGFncy5ub25lKSB8XG4gICAgKHF1ZXJ5LnN0YXRpYyA/IFF1ZXJ5RmxhZ3MuaXNTdGF0aWMgOiBRdWVyeUZsYWdzLm5vbmUpIHxcbiAgICAocXVlcnkuZW1pdERpc3RpbmN0Q2hhbmdlc09ubHkgPyBRdWVyeUZsYWdzLmVtaXREaXN0aW5jdENoYW5nZXNPbmx5IDogUXVlcnlGbGFncy5ub25lKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVlcnlQcmVkaWNhdGUoXG4gIHF1ZXJ5OiBSM1F1ZXJ5TWV0YWRhdGEsXG4gIGNvbnN0YW50UG9vbDogQ29uc3RhbnRQb29sLFxuKTogby5FeHByZXNzaW9uIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocXVlcnkucHJlZGljYXRlKSkge1xuICAgIGxldCBwcmVkaWNhdGU6IG8uRXhwcmVzc2lvbltdID0gW107XG4gICAgcXVlcnkucHJlZGljYXRlLmZvckVhY2goKHNlbGVjdG9yOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICAgIC8vIEVhY2ggaXRlbSBpbiBwcmVkaWNhdGVzIGFycmF5IG1heSBjb250YWluIHN0cmluZ3Mgd2l0aCBjb21tYS1zZXBhcmF0ZWQgcmVmc1xuICAgICAgLy8gKGZvciBleC4gJ3JlZiwgcmVmMSwgLi4uLCByZWZOJyksIHRodXMgd2UgZXh0cmFjdCBpbmRpdmlkdWFsIHJlZnMgYW5kIHN0b3JlIHRoZW1cbiAgICAgIC8vIGFzIHNlcGFyYXRlIGFycmF5IGVudGl0aWVzXG4gICAgICBjb25zdCBzZWxlY3RvcnMgPSBzZWxlY3Rvci5zcGxpdCgnLCcpLm1hcCgodG9rZW4pID0+IG8ubGl0ZXJhbCh0b2tlbi50cmltKCkpKTtcbiAgICAgIHByZWRpY2F0ZS5wdXNoKC4uLnNlbGVjdG9ycyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbnN0YW50UG9vbC5nZXRDb25zdExpdGVyYWwoby5saXRlcmFsQXJyKHByZWRpY2F0ZSksIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoZSBvcmlnaW5hbCBwcmVkaWNhdGUgbWF5IGhhdmUgYmVlbiB3cmFwcGVkIGluIGEgYGZvcndhcmRSZWYoKWAgY2FsbC5cbiAgICBzd2l0Y2ggKHF1ZXJ5LnByZWRpY2F0ZS5mb3J3YXJkUmVmKSB7XG4gICAgICBjYXNlIEZvcndhcmRSZWZIYW5kbGluZy5Ob25lOlxuICAgICAgY2FzZSBGb3J3YXJkUmVmSGFuZGxpbmcuVW53cmFwcGVkOlxuICAgICAgICByZXR1cm4gcXVlcnkucHJlZGljYXRlLmV4cHJlc3Npb247XG4gICAgICBjYXNlIEZvcndhcmRSZWZIYW5kbGluZy5XcmFwcGVkOlxuICAgICAgICByZXR1cm4gby5pbXBvcnRFeHByKFIzLnJlc29sdmVGb3J3YXJkUmVmKS5jYWxsRm4oW3F1ZXJ5LnByZWRpY2F0ZS5leHByZXNzaW9uXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVRdWVyeUNyZWF0ZUNhbGwoXG4gIHF1ZXJ5OiBSM1F1ZXJ5TWV0YWRhdGEsXG4gIGNvbnN0YW50UG9vbDogQ29uc3RhbnRQb29sLFxuICBxdWVyeVR5cGVGbnM6IHtzaWduYWxCYXNlZDogby5FeHRlcm5hbFJlZmVyZW5jZTsgbm9uU2lnbmFsOiBvLkV4dGVybmFsUmVmZXJlbmNlfSxcbiAgcHJlcGVuZFBhcmFtcz86IG8uRXhwcmVzc2lvbltdLFxuKTogby5JbnZva2VGdW5jdGlvbkV4cHIge1xuICBjb25zdCBwYXJhbWV0ZXJzOiBvLkV4cHJlc3Npb25bXSA9IFtdO1xuICBpZiAocHJlcGVuZFBhcmFtcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcGFyYW1ldGVycy5wdXNoKC4uLnByZXBlbmRQYXJhbXMpO1xuICB9XG4gIGlmIChxdWVyeS5pc1NpZ25hbCkge1xuICAgIHBhcmFtZXRlcnMucHVzaChuZXcgby5SZWFkUHJvcEV4cHIoby52YXJpYWJsZShDT05URVhUX05BTUUpLCBxdWVyeS5wcm9wZXJ0eU5hbWUpKTtcbiAgfVxuICBwYXJhbWV0ZXJzLnB1c2goZ2V0UXVlcnlQcmVkaWNhdGUocXVlcnksIGNvbnN0YW50UG9vbCksIG8ubGl0ZXJhbCh0b1F1ZXJ5RmxhZ3MocXVlcnkpKSk7XG4gIGlmIChxdWVyeS5yZWFkKSB7XG4gICAgcGFyYW1ldGVycy5wdXNoKHF1ZXJ5LnJlYWQpO1xuICB9XG5cbiAgY29uc3QgcXVlcnlDcmVhdGVGbiA9IHF1ZXJ5LmlzU2lnbmFsID8gcXVlcnlUeXBlRm5zLnNpZ25hbEJhc2VkIDogcXVlcnlUeXBlRm5zLm5vblNpZ25hbDtcbiAgcmV0dXJuIG8uaW1wb3J0RXhwcihxdWVyeUNyZWF0ZUZuKS5jYWxsRm4ocGFyYW1ldGVycyk7XG59XG5cbmNvbnN0IHF1ZXJ5QWR2YW5jZVBsYWNlaG9sZGVyID0gU3ltYm9sKCdxdWVyeUFkdmFuY2VQbGFjZWhvbGRlcicpO1xuXG4vKipcbiAqIENvbGxhcHNlcyBxdWVyeSBhZHZhbmNlIHBsYWNlaG9sZGVycyBpbiBhIGxpc3Qgb2Ygc3RhdGVtZW50cy5cbiAqXG4gKiBUaGlzIGFsbG93cyBmb3IgbGVzcyBnZW5lcmF0ZWQgY29kZSBiZWNhdXNlIG11bHRpcGxlIHNpYmxpbmcgcXVlcnkgYWR2YW5jZVxuICogc3RhdGVtZW50cyBjYW4gYmUgY29sbGFwc2VkIGludG8gYSBzaW5nbGUgY2FsbCB3aXRoIHRoZSBjb3VudCBhcyBhcmd1bWVudC5cbiAqXG4gKiBlLmcuXG4gKlxuICogYGBgdHNcbiAqICAgYmxhKCk7XG4gKiAgIHF1ZXJ5QWR2YW5jZSgpO1xuICogICBxdWVyeUFkdmFuY2UoKTtcbiAqICAgYmxhKCk7XG4gKiBgYGBcbiAqXG4gKiAgIC0tPiB3aWxsIHR1cm4gaW50b1xuICpcbiAqIGBgYFxuICogICBibGEoKTtcbiAqICAgcXVlcnlBZHZhbmNlKDIpO1xuICogICBibGEoKTtcbiAqIGBgYFxuICovXG5mdW5jdGlvbiBjb2xsYXBzZUFkdmFuY2VTdGF0ZW1lbnRzKFxuICBzdGF0ZW1lbnRzOiAoby5TdGF0ZW1lbnQgfCB0eXBlb2YgcXVlcnlBZHZhbmNlUGxhY2Vob2xkZXIpW10sXG4pOiBvLlN0YXRlbWVudFtdIHtcbiAgY29uc3QgcmVzdWx0OiBvLlN0YXRlbWVudFtdID0gW107XG4gIGxldCBhZHZhbmNlQ29sbGFwc2VDb3VudCA9IDA7XG4gIGNvbnN0IGZsdXNoQWR2YW5jZUNvdW50ID0gKCkgPT4ge1xuICAgIGlmIChhZHZhbmNlQ29sbGFwc2VDb3VudCA+IDApIHtcbiAgICAgIHJlc3VsdC51bnNoaWZ0KFxuICAgICAgICBvXG4gICAgICAgICAgLmltcG9ydEV4cHIoUjMucXVlcnlBZHZhbmNlKVxuICAgICAgICAgIC5jYWxsRm4oYWR2YW5jZUNvbGxhcHNlQ291bnQgPT09IDEgPyBbXSA6IFtvLmxpdGVyYWwoYWR2YW5jZUNvbGxhcHNlQ291bnQpXSlcbiAgICAgICAgICAudG9TdG10KCksXG4gICAgICApO1xuICAgICAgYWR2YW5jZUNvbGxhcHNlQ291bnQgPSAwO1xuICAgIH1cbiAgfTtcblxuICAvLyBJdGVyYXRlIHRocm91Z2ggc3RhdGVtZW50cyBpbiByZXZlcnNlIGFuZCBjb2xsYXBzZSBhZHZhbmNlIHBsYWNlaG9sZGVycy5cbiAgZm9yIChsZXQgaSA9IHN0YXRlbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCBzdCA9IHN0YXRlbWVudHNbaV07XG4gICAgaWYgKHN0ID09PSBxdWVyeUFkdmFuY2VQbGFjZWhvbGRlcikge1xuICAgICAgYWR2YW5jZUNvbGxhcHNlQ291bnQrKztcbiAgICB9IGVsc2Uge1xuICAgICAgZmx1c2hBZHZhbmNlQ291bnQoKTtcbiAgICAgIHJlc3VsdC51bnNoaWZ0KHN0KTtcbiAgICB9XG4gIH1cbiAgZmx1c2hBZHZhbmNlQ291bnQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gRGVmaW5lIGFuZCB1cGRhdGUgYW55IHZpZXcgcXVlcmllc1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVZpZXdRdWVyaWVzRnVuY3Rpb24oXG4gIHZpZXdRdWVyaWVzOiBSM1F1ZXJ5TWV0YWRhdGFbXSxcbiAgY29uc3RhbnRQb29sOiBDb25zdGFudFBvb2wsXG4gIG5hbWU/OiBzdHJpbmcsXG4pOiBvLkV4cHJlc3Npb24ge1xuICBjb25zdCBjcmVhdGVTdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdID0gW107XG4gIGNvbnN0IHVwZGF0ZVN0YXRlbWVudHM6IChvLlN0YXRlbWVudCB8IHR5cGVvZiBxdWVyeUFkdmFuY2VQbGFjZWhvbGRlcilbXSA9IFtdO1xuICBjb25zdCB0ZW1wQWxsb2NhdG9yID0gdGVtcG9yYXJ5QWxsb2NhdG9yKChzdCkgPT4gdXBkYXRlU3RhdGVtZW50cy5wdXNoKHN0KSwgVEVNUE9SQVJZX05BTUUpO1xuXG4gIHZpZXdRdWVyaWVzLmZvckVhY2goKHF1ZXJ5OiBSM1F1ZXJ5TWV0YWRhdGEpID0+IHtcbiAgICAvLyBjcmVhdGlvbiBjYWxsLCBlLmcuIHIzLnZpZXdRdWVyeShzb21lUHJlZGljYXRlLCB0cnVlKSBvclxuICAgIC8vICAgICAgICAgICAgICAgIHIzLnZpZXdRdWVyeVNpZ25hbChjdHgucHJvcCwgc29tZVByZWRpY2F0ZSwgdHJ1ZSk7XG4gICAgY29uc3QgcXVlcnlEZWZpbml0aW9uQ2FsbCA9IGNyZWF0ZVF1ZXJ5Q3JlYXRlQ2FsbChxdWVyeSwgY29uc3RhbnRQb29sLCB7XG4gICAgICBzaWduYWxCYXNlZDogUjMudmlld1F1ZXJ5U2lnbmFsLFxuICAgICAgbm9uU2lnbmFsOiBSMy52aWV3UXVlcnksXG4gICAgfSk7XG4gICAgY3JlYXRlU3RhdGVtZW50cy5wdXNoKHF1ZXJ5RGVmaW5pdGlvbkNhbGwudG9TdG10KCkpO1xuXG4gICAgLy8gU2lnbmFsIHF1ZXJpZXMgdXBkYXRlIGxhemlseSBhbmQgd2UganVzdCBhZHZhbmNlIHRoZSBpbmRleC5cbiAgICBpZiAocXVlcnkuaXNTaWduYWwpIHtcbiAgICAgIHVwZGF0ZVN0YXRlbWVudHMucHVzaChxdWVyeUFkdmFuY2VQbGFjZWhvbGRlcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlLCBlLmcuIChyMy5xdWVyeVJlZnJlc2godG1wID0gcjMubG9hZFF1ZXJ5KCkpICYmIChjdHguc29tZURpciA9IHRtcCkpO1xuICAgIGNvbnN0IHRlbXBvcmFyeSA9IHRlbXBBbGxvY2F0b3IoKTtcbiAgICBjb25zdCBnZXRRdWVyeUxpc3QgPSBvLmltcG9ydEV4cHIoUjMubG9hZFF1ZXJ5KS5jYWxsRm4oW10pO1xuICAgIGNvbnN0IHJlZnJlc2ggPSBvLmltcG9ydEV4cHIoUjMucXVlcnlSZWZyZXNoKS5jYWxsRm4oW3RlbXBvcmFyeS5zZXQoZ2V0UXVlcnlMaXN0KV0pO1xuICAgIGNvbnN0IHVwZGF0ZURpcmVjdGl2ZSA9IG9cbiAgICAgIC52YXJpYWJsZShDT05URVhUX05BTUUpXG4gICAgICAucHJvcChxdWVyeS5wcm9wZXJ0eU5hbWUpXG4gICAgICAuc2V0KHF1ZXJ5LmZpcnN0ID8gdGVtcG9yYXJ5LnByb3AoJ2ZpcnN0JykgOiB0ZW1wb3JhcnkpO1xuICAgIHVwZGF0ZVN0YXRlbWVudHMucHVzaChyZWZyZXNoLmFuZCh1cGRhdGVEaXJlY3RpdmUpLnRvU3RtdCgpKTtcbiAgfSk7XG5cbiAgY29uc3Qgdmlld1F1ZXJ5Rm5OYW1lID0gbmFtZSA/IGAke25hbWV9X1F1ZXJ5YCA6IG51bGw7XG4gIHJldHVybiBvLmZuKFxuICAgIFtuZXcgby5GblBhcmFtKFJFTkRFUl9GTEFHUywgby5OVU1CRVJfVFlQRSksIG5ldyBvLkZuUGFyYW0oQ09OVEVYVF9OQU1FLCBudWxsKV0sXG4gICAgW1xuICAgICAgcmVuZGVyRmxhZ0NoZWNrSWZTdG10KGNvcmUuUmVuZGVyRmxhZ3MuQ3JlYXRlLCBjcmVhdGVTdGF0ZW1lbnRzKSxcbiAgICAgIHJlbmRlckZsYWdDaGVja0lmU3RtdChjb3JlLlJlbmRlckZsYWdzLlVwZGF0ZSwgY29sbGFwc2VBZHZhbmNlU3RhdGVtZW50cyh1cGRhdGVTdGF0ZW1lbnRzKSksXG4gICAgXSxcbiAgICBvLklORkVSUkVEX1RZUEUsXG4gICAgbnVsbCxcbiAgICB2aWV3UXVlcnlGbk5hbWUsXG4gICk7XG59XG5cbi8vIERlZmluZSBhbmQgdXBkYXRlIGFueSBjb250ZW50IHF1ZXJpZXNcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb250ZW50UXVlcmllc0Z1bmN0aW9uKFxuICBxdWVyaWVzOiBSM1F1ZXJ5TWV0YWRhdGFbXSxcbiAgY29uc3RhbnRQb29sOiBDb25zdGFudFBvb2wsXG4gIG5hbWU/OiBzdHJpbmcsXG4pOiBvLkV4cHJlc3Npb24ge1xuICBjb25zdCBjcmVhdGVTdGF0ZW1lbnRzOiBvLlN0YXRlbWVudFtdID0gW107XG4gIGNvbnN0IHVwZGF0ZVN0YXRlbWVudHM6IChvLlN0YXRlbWVudCB8IHR5cGVvZiBxdWVyeUFkdmFuY2VQbGFjZWhvbGRlcilbXSA9IFtdO1xuICBjb25zdCB0ZW1wQWxsb2NhdG9yID0gdGVtcG9yYXJ5QWxsb2NhdG9yKChzdCkgPT4gdXBkYXRlU3RhdGVtZW50cy5wdXNoKHN0KSwgVEVNUE9SQVJZX05BTUUpO1xuXG4gIGZvciAoY29uc3QgcXVlcnkgb2YgcXVlcmllcykge1xuICAgIC8vIGNyZWF0aW9uLCBlLmcuIHIzLmNvbnRlbnRRdWVyeShkaXJJbmRleCwgc29tZVByZWRpY2F0ZSwgdHJ1ZSwgbnVsbCkgb3JcbiAgICAvLyAgICAgICAgICAgICAgICByMy5jb250ZW50UXVlcnlTaWduYWwoZGlySW5kZXgsIHByb3BOYW1lLCBzb21lUHJlZGljYXRlLCA8ZmxhZ3M+LCA8cmVhZD4pLlxuICAgIGNyZWF0ZVN0YXRlbWVudHMucHVzaChcbiAgICAgIGNyZWF0ZVF1ZXJ5Q3JlYXRlQ2FsbChcbiAgICAgICAgcXVlcnksXG4gICAgICAgIGNvbnN0YW50UG9vbCxcbiAgICAgICAge25vblNpZ25hbDogUjMuY29udGVudFF1ZXJ5LCBzaWduYWxCYXNlZDogUjMuY29udGVudFF1ZXJ5U2lnbmFsfSxcbiAgICAgICAgLyogcHJlcGVuZFBhcmFtcyAqLyBbby52YXJpYWJsZSgnZGlySW5kZXgnKV0sXG4gICAgICApLnRvU3RtdCgpLFxuICAgICk7XG5cbiAgICAvLyBTaWduYWwgcXVlcmllcyB1cGRhdGUgbGF6aWx5IGFuZCB3ZSBqdXN0IGFkdmFuY2UgdGhlIGluZGV4LlxuICAgIGlmIChxdWVyeS5pc1NpZ25hbCkge1xuICAgICAgdXBkYXRlU3RhdGVtZW50cy5wdXNoKHF1ZXJ5QWR2YW5jZVBsYWNlaG9sZGVyKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSwgZS5nLiAocjMucXVlcnlSZWZyZXNoKHRtcCA9IHIzLmxvYWRRdWVyeSgpKSAmJiAoY3R4LnNvbWVEaXIgPSB0bXApKTtcbiAgICBjb25zdCB0ZW1wb3JhcnkgPSB0ZW1wQWxsb2NhdG9yKCk7XG4gICAgY29uc3QgZ2V0UXVlcnlMaXN0ID0gby5pbXBvcnRFeHByKFIzLmxvYWRRdWVyeSkuY2FsbEZuKFtdKTtcbiAgICBjb25zdCByZWZyZXNoID0gby5pbXBvcnRFeHByKFIzLnF1ZXJ5UmVmcmVzaCkuY2FsbEZuKFt0ZW1wb3Jhcnkuc2V0KGdldFF1ZXJ5TGlzdCldKTtcbiAgICBjb25zdCB1cGRhdGVEaXJlY3RpdmUgPSBvXG4gICAgICAudmFyaWFibGUoQ09OVEVYVF9OQU1FKVxuICAgICAgLnByb3AocXVlcnkucHJvcGVydHlOYW1lKVxuICAgICAgLnNldChxdWVyeS5maXJzdCA/IHRlbXBvcmFyeS5wcm9wKCdmaXJzdCcpIDogdGVtcG9yYXJ5KTtcbiAgICB1cGRhdGVTdGF0ZW1lbnRzLnB1c2gocmVmcmVzaC5hbmQodXBkYXRlRGlyZWN0aXZlKS50b1N0bXQoKSk7XG4gIH1cblxuICBjb25zdCBjb250ZW50UXVlcmllc0ZuTmFtZSA9IG5hbWUgPyBgJHtuYW1lfV9Db250ZW50UXVlcmllc2AgOiBudWxsO1xuICByZXR1cm4gby5mbihcbiAgICBbXG4gICAgICBuZXcgby5GblBhcmFtKFJFTkRFUl9GTEFHUywgby5OVU1CRVJfVFlQRSksXG4gICAgICBuZXcgby5GblBhcmFtKENPTlRFWFRfTkFNRSwgbnVsbCksXG4gICAgICBuZXcgby5GblBhcmFtKCdkaXJJbmRleCcsIG51bGwpLFxuICAgIF0sXG4gICAgW1xuICAgICAgcmVuZGVyRmxhZ0NoZWNrSWZTdG10KGNvcmUuUmVuZGVyRmxhZ3MuQ3JlYXRlLCBjcmVhdGVTdGF0ZW1lbnRzKSxcbiAgICAgIHJlbmRlckZsYWdDaGVja0lmU3RtdChjb3JlLlJlbmRlckZsYWdzLlVwZGF0ZSwgY29sbGFwc2VBZHZhbmNlU3RhdGVtZW50cyh1cGRhdGVTdGF0ZW1lbnRzKSksXG4gICAgXSxcbiAgICBvLklORkVSUkVEX1RZUEUsXG4gICAgbnVsbCxcbiAgICBjb250ZW50UXVlcmllc0ZuTmFtZSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidDJfYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3JlbmRlcjMvdmlldy90Ml9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QVNUfSBmcm9tICcuLi8uLi9leHByZXNzaW9uX3BhcnNlci9hc3QnO1xuaW1wb3J0IHtcbiAgQm91bmRBdHRyaWJ1dGUsXG4gIEJvdW5kRXZlbnQsXG4gIENvbnRlbnQsXG4gIERlZmVycmVkQmxvY2ssXG4gIERlZmVycmVkQmxvY2tFcnJvcixcbiAgRGVmZXJyZWRCbG9ja0xvYWRpbmcsXG4gIERlZmVycmVkQmxvY2tQbGFjZWhvbGRlcixcbiAgRGVmZXJyZWRUcmlnZ2VyLFxuICBFbGVtZW50LFxuICBGb3JMb29wQmxvY2ssXG4gIEZvckxvb3BCbG9ja0VtcHR5LFxuICBJZkJsb2NrQnJhbmNoLFxuICBMZXREZWNsYXJhdGlvbixcbiAgTm9kZSxcbiAgUmVmZXJlbmNlLFxuICBTd2l0Y2hCbG9ja0Nhc2UsXG4gIFRlbXBsYXRlLFxuICBUZXh0QXR0cmlidXRlLFxuICBWYXJpYWJsZSxcbn0gZnJvbSAnLi4vcjNfYXN0JztcblxuLyoqIE5vZGUgdGhhdCBoYXMgYSBgU2NvcGVgIGFzc29jaWF0ZWQgd2l0aCBpdC4gKi9cbmV4cG9ydCB0eXBlIFNjb3BlZE5vZGUgPVxuICB8IFRlbXBsYXRlXG4gIHwgU3dpdGNoQmxvY2tDYXNlXG4gIHwgSWZCbG9ja0JyYW5jaFxuICB8IEZvckxvb3BCbG9ja1xuICB8IEZvckxvb3BCbG9ja0VtcHR5XG4gIHwgRGVmZXJyZWRCbG9ja1xuICB8IERlZmVycmVkQmxvY2tFcnJvclxuICB8IERlZmVycmVkQmxvY2tMb2FkaW5nXG4gIHwgRGVmZXJyZWRCbG9ja1BsYWNlaG9sZGVyXG4gIHwgQ29udGVudDtcblxuLyoqIFBvc3NpYmxlIHZhbHVlcyB0aGF0IGEgcmVmZXJlbmNlIGNhbiBiZSByZXNvbHZlZCB0by4gKi9cbmV4cG9ydCB0eXBlIFJlZmVyZW5jZVRhcmdldDxEaXJlY3RpdmVUPiA9XG4gIHwge1xuICAgICAgZGlyZWN0aXZlOiBEaXJlY3RpdmVUO1xuICAgICAgbm9kZTogRWxlbWVudCB8IFRlbXBsYXRlO1xuICAgIH1cbiAgfCBFbGVtZW50XG4gIHwgVGVtcGxhdGU7XG5cbi8qKiBFbnRpdHkgdGhhdCBpcyBsb2NhbCB0byB0aGUgdGVtcGxhdGUgYW5kIGRlZmluZWQgd2l0aGluIHRoZSB0ZW1wbGF0ZS4gKi9cbmV4cG9ydCB0eXBlIFRlbXBsYXRlRW50aXR5ID0gUmVmZXJlbmNlIHwgVmFyaWFibGUgfCBMZXREZWNsYXJhdGlvbjtcblxuLypcbiAqIHQyIGlzIHRoZSByZXBsYWNlbWVudCBmb3IgdGhlIGBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyYC4gSXQgaGFuZGxlcyB0aGUgb3BlcmF0aW9ucyBvZlxuICogYW5hbHl6aW5nIEFuZ3VsYXIgdGVtcGxhdGVzLCBleHRyYWN0aW5nIHNlbWFudGljIGluZm8sIGFuZCB1bHRpbWF0ZWx5IHByb2R1Y2luZyBhIHRlbXBsYXRlXG4gKiBkZWZpbml0aW9uIGZ1bmN0aW9uIHdoaWNoIHJlbmRlcnMgdGhlIHRlbXBsYXRlIHVzaW5nIEl2eSBpbnN0cnVjdGlvbnMuXG4gKlxuICogdDIgZGF0YSBpcyBhbHNvIHV0aWxpemVkIGJ5IHRoZSB0ZW1wbGF0ZSB0eXBlLWNoZWNraW5nIGZhY2lsaXRpZXMgdG8gdW5kZXJzdGFuZCBhIHRlbXBsYXRlIGVub3VnaFxuICogdG8gZ2VuZXJhdGUgdHlwZS1jaGVja2luZyBjb2RlIGZvciBpdC5cbiAqL1xuXG4vKipcbiAqIEEgbG9naWNhbCB0YXJnZXQgZm9yIGFuYWx5c2lzLCB3aGljaCBjb3VsZCBjb250YWluIGEgdGVtcGxhdGUgb3Igb3RoZXIgdHlwZXMgb2YgYmluZGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0IHtcbiAgdGVtcGxhdGU/OiBOb2RlW107XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB3aGljaCBjYW4gaW5kaWNhdGUgd2hldGhlciBhIGdpdmVuIHByb3BlcnR5IG5hbWUgaXMgcHJlc2VudCBvciBub3QuXG4gKlxuICogVGhpcyBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgc2V0IG9mIGlucHV0cyBvciBvdXRwdXRzIHByZXNlbnQgb24gYSBkaXJlY3RpdmUsIGFuZCBhbGxvd3MgdGhlXG4gKiBiaW5kZXIgdG8gcXVlcnkgZm9yIHRoZSBwcmVzZW5jZSBvZiBhIG1hcHBpbmcgZm9yIHByb3BlcnR5IG5hbWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0T3V0cHV0UHJvcGVydHlTZXQge1xuICBoYXNCaW5kaW5nUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGNhcHR1cmVzIHRoZSBhbmltYXRpb24gdHJpZ2dlciBuYW1lcyB0aGF0IGFyZSBzdGF0aWNhbGx5IHJlc29sdmFibGVcbiAqIGFuZCB3aGV0aGVyIHNvbWUgbmFtZXMgY291bGQgbm90IGJlIHN0YXRpY2FsbHkgZXZhbHVhdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuaW1hdGlvblRyaWdnZXJOYW1lcyB7XG4gIGluY2x1ZGVzRHluYW1pY0FuaW1hdGlvbnM6IGJvb2xlYW47XG4gIHN0YXRpY1RyaWdnZXJOYW1lczogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWV0YWRhdGEgcmVnYXJkaW5nIGEgZGlyZWN0aXZlIHRoYXQncyBuZWVkZWQgdG8gbWF0Y2ggaXQgYWdhaW5zdCB0ZW1wbGF0ZSBlbGVtZW50cy4gVGhpcyBpc1xuICogcHJvdmlkZWQgYnkgYSBjb25zdW1lciBvZiB0aGUgdDIgQVBJcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXJlY3RpdmVNZXRhIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpcmVjdGl2ZSBjbGFzcyAodXNlZCBmb3IgZGVidWdnaW5nKS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKiogVGhlIHNlbGVjdG9yIGZvciB0aGUgZGlyZWN0aXZlIG9yIGBudWxsYCBpZiB0aGVyZSBpc24ndCBvbmUuICovXG4gIHNlbGVjdG9yOiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkaXJlY3RpdmUgaXMgYSBjb21wb25lbnQuXG4gICAqL1xuICBpc0NvbXBvbmVudDogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IG9mIGlucHV0cyB3aGljaCB0aGlzIGRpcmVjdGl2ZSBjbGFpbXMuXG4gICAqXG4gICAqIEdvZXMgZnJvbSBwcm9wZXJ0eSBuYW1lcyB0byBmaWVsZCBuYW1lcy5cbiAgICovXG4gIGlucHV0czogSW5wdXRPdXRwdXRQcm9wZXJ0eVNldDtcblxuICAvKipcbiAgICogU2V0IG9mIG91dHB1dHMgd2hpY2ggdGhpcyBkaXJlY3RpdmUgY2xhaW1zLlxuICAgKlxuICAgKiBHb2VzIGZyb20gcHJvcGVydHkgbmFtZXMgdG8gZmllbGQgbmFtZXMuXG4gICAqL1xuICBvdXRwdXRzOiBJbnB1dE91dHB1dFByb3BlcnR5U2V0O1xuXG4gIC8qKlxuICAgKiBOYW1lIHVuZGVyIHdoaWNoIHRoZSBkaXJlY3RpdmUgaXMgZXhwb3J0ZWQsIGlmIGFueSAoZXhwb3J0QXMgaW4gQW5ndWxhcikuXG4gICAqXG4gICAqIE51bGwgb3RoZXJ3aXNlXG4gICAqL1xuICBleHBvcnRBczogc3RyaW5nW10gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkaXJlY3RpdmUgaXMgYSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZSAoZS5nLiBgPGRpdiAqbmdJZj48L2Rpdj5gKS5cbiAgICovXG4gIGlzU3RydWN0dXJhbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhlIGRpcmVjdGl2ZSBpcyBhIGNvbXBvbmVudCwgaW5jbHVkZXMgdGhlIHNlbGVjdG9ycyBvZiBpdHMgYG5nLWNvbnRlbnRgIGVsZW1lbnRzLlxuICAgKi9cbiAgbmdDb250ZW50U2VsZWN0b3JzOiBzdHJpbmdbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHRlbXBsYXRlIG9mIHRoZSBjb21wb25lbnQgcHJlc2VydmVzIHdoaXRlc3BhY2VzLlxuICAgKi9cbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYW5pbWF0aW9ucyB0aGF0IHRoZSB1c2VyIGRlZmluZXMgaW4gdGhlIGNvbXBvbmVudC5cbiAgICogT25seSBpbmNsdWRlcyB0aGUgYW5pbWF0aW9uIG5hbWVzLlxuICAgKi9cbiAgYW5pbWF0aW9uVHJpZ2dlck5hbWVzOiBBbmltYXRpb25UcmlnZ2VyTmFtZXMgfCBudWxsO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB0byB0aGUgYmluZGluZyBBUEksIHdoaWNoIHByb2Nlc3NlcyBhIHRlbXBsYXRlIGFuZCByZXR1cm5zIGFuIG9iamVjdCBzaW1pbGFyIHRvIHRoZVxuICogYHRzLlR5cGVDaGVja2VyYC5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgYEJvdW5kVGFyZ2V0YCBoYXMgYW4gQVBJIGZvciBleHRyYWN0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9jZXNzZWQgdGFyZ2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldEJpbmRlcjxEIGV4dGVuZHMgRGlyZWN0aXZlTWV0YT4ge1xuICBiaW5kKHRhcmdldDogVGFyZ2V0KTogQm91bmRUYXJnZXQ8RD47XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIHBlcmZvcm1pbmcgdGhlIGJpbmRpbmcgb3BlcmF0aW9uIGFnYWluc3QgYSBgVGFyZ2V0YC5cbiAqXG4gKiBUaGUgb3JpZ2luYWwgYFRhcmdldGAgaXMgYWNjZXNzaWJsZSwgYXMgd2VsbCBhcyBhIHN1aXRlIG9mIG1ldGhvZHMgZm9yIGV4dHJhY3RpbmcgYmluZGluZ1xuICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBgVGFyZ2V0YC5cbiAqXG4gKiBAcGFyYW0gRGlyZWN0aXZlVCBkaXJlY3RpdmUgbWV0YWRhdGEgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvdW5kVGFyZ2V0PERpcmVjdGl2ZVQgZXh0ZW5kcyBEaXJlY3RpdmVNZXRhPiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIG9yaWdpbmFsIGBUYXJnZXRgIHRoYXQgd2FzIGJvdW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBUYXJnZXQ7XG5cbiAgLyoqXG4gICAqIEZvciBhIGdpdmVuIHRlbXBsYXRlIG5vZGUgKGVpdGhlciBhbiBgRWxlbWVudGAgb3IgYSBgVGVtcGxhdGVgKSwgZ2V0IHRoZSBzZXQgb2YgZGlyZWN0aXZlc1xuICAgKiB3aGljaCBtYXRjaGVkIHRoZSBub2RlLCBpZiBhbnkuXG4gICAqL1xuICBnZXREaXJlY3RpdmVzT2ZOb2RlKG5vZGU6IEVsZW1lbnQgfCBUZW1wbGF0ZSk6IERpcmVjdGl2ZVRbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZvciBhIGdpdmVuIGBSZWZlcmVuY2VgLCBnZXQgdGhlIHJlZmVyZW5jZSdzIHRhcmdldCAtIGVpdGhlciBhbiBgRWxlbWVudGAsIGEgYFRlbXBsYXRlYCwgb3JcbiAgICogYSBkaXJlY3RpdmUgb24gYSBwYXJ0aWN1bGFyIG5vZGUuXG4gICAqL1xuICBnZXRSZWZlcmVuY2VUYXJnZXQocmVmOiBSZWZlcmVuY2UpOiBSZWZlcmVuY2VUYXJnZXQ8RGlyZWN0aXZlVD4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBGb3IgYSBnaXZlbiBiaW5kaW5nLCBnZXQgdGhlIGVudGl0eSB0byB3aGljaCB0aGUgYmluZGluZyBpcyBiZWluZyBtYWRlLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgZWl0aGVyIGJlIGEgZGlyZWN0aXZlIG9yIHRoZSBub2RlIGl0c2VsZi5cbiAgICovXG4gIGdldENvbnN1bWVyT2ZCaW5kaW5nKFxuICAgIGJpbmRpbmc6IEJvdW5kQXR0cmlidXRlIHwgQm91bmRFdmVudCB8IFRleHRBdHRyaWJ1dGUsXG4gICk6IERpcmVjdGl2ZVQgfCBFbGVtZW50IHwgVGVtcGxhdGUgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgZ2l2ZW4gYEFTVGAgZXhwcmVzc2lvbiByZWZlcnMgdG8gYSBgUmVmZXJlbmNlYCBvciBgVmFyaWFibGVgIHdpdGhpbiB0aGUgYFRhcmdldGAsIHRoZW5cbiAgICogcmV0dXJuIHRoYXQuXG4gICAqXG4gICAqIE90aGVyd2lzZSwgcmV0dXJucyBgbnVsbGAuXG4gICAqXG4gICAqIFRoaXMgaXMgb25seSBkZWZpbmVkIGZvciBgQVNUYCBleHByZXNzaW9ucyB0aGF0IHJlYWQgb3Igd3JpdGUgdG8gYSBwcm9wZXJ0eSBvZiBhblxuICAgKiBgSW1wbGljaXRSZWNlaXZlcmAuXG4gICAqL1xuICBnZXRFeHByZXNzaW9uVGFyZ2V0KGV4cHI6IEFTVCk6IFRlbXBsYXRlRW50aXR5IHwgbnVsbDtcblxuICAvKipcbiAgICogR2l2ZW4gYSBwYXJ0aWN1bGFyIGBSZWZlcmVuY2VgIG9yIGBWYXJpYWJsZWAsIGdldCB0aGUgYFNjb3BlZE5vZGVgIHdoaWNoIGNyZWF0ZWQgaXQuXG4gICAqXG4gICAqIEFsbCBgVmFyaWFibGVgcyBhcmUgZGVmaW5lZCBvbiBub2RlLCBzbyB0aGlzIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlIGZvciBhIGBWYXJpYWJsZWBcbiAgICogZnJvbSB0aGUgYFRhcmdldGAuIFJldHVybnMgYG51bGxgIG90aGVyd2lzZS5cbiAgICovXG4gIGdldERlZmluaXRpb25Ob2RlT2ZTeW1ib2woc3ltYm9sOiBUZW1wbGF0ZUVudGl0eSk6IFNjb3BlZE5vZGUgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5lc3RpbmcgbGV2ZWwgb2YgYSBwYXJ0aWN1bGFyIGBTY29wZWROb2RlYC5cbiAgICpcbiAgICogVGhpcyBzdGFydHMgYXQgMSBmb3IgdG9wLWxldmVsIG5vZGVzIHdpdGhpbiB0aGUgYFRhcmdldGAgYW5kIGluY3JlYXNlcyBmb3Igbm9kZXNcbiAgICogbmVzdGVkIGF0IGRlZXBlciBsZXZlbHMuXG4gICAqL1xuICBnZXROZXN0aW5nTGV2ZWwobm9kZTogU2NvcGVkTm9kZSk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IGFsbCBgUmVmZXJlbmNlYHMgYW5kIGBWYXJpYWJsZXNgIHZpc2libGUgd2l0aGluIHRoZSBnaXZlbiBgU2NvcGVkTm9kZWAgKG9yIGF0IHRoZSB0b3BcbiAgICogbGV2ZWwsIGlmIGBudWxsYCBpcyBwYXNzZWQpLlxuICAgKi9cbiAgZ2V0RW50aXRpZXNJblNjb3BlKG5vZGU6IFNjb3BlZE5vZGUgfCBudWxsKTogUmVhZG9ubHlTZXQ8VGVtcGxhdGVFbnRpdHk+O1xuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGFsbCB0aGUgZGlyZWN0aXZlcyB1c2VkIGJ5IHRoZSB0YXJnZXQsXG4gICAqIGluY2x1ZGluZyBkaXJlY3RpdmVzIGZyb20gYEBkZWZlcmAgYmxvY2tzLlxuICAgKi9cbiAgZ2V0VXNlZERpcmVjdGl2ZXMoKTogRGlyZWN0aXZlVFtdO1xuXG4gIC8qKlxuICAgKiBHZXQgYSBsaXN0IG9mIGVhZ2VybHkgdXNlZCBkaXJlY3RpdmVzIGZyb20gdGhlIHRhcmdldC5cbiAgICogTm90ZTogdGhpcyBsaXN0ICpleGNsdWRlcyogZGlyZWN0aXZlcyBmcm9tIGBAZGVmZXJgIGJsb2Nrcy5cbiAgICovXG4gIGdldEVhZ2VybHlVc2VkRGlyZWN0aXZlcygpOiBEaXJlY3RpdmVUW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBwaXBlcyB1c2VkIGJ5IHRoZSB0YXJnZXQsXG4gICAqIGluY2x1ZGluZyBwaXBlcyBmcm9tIGBAZGVmZXJgIGJsb2Nrcy5cbiAgICovXG4gIGdldFVzZWRQaXBlcygpOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiBlYWdlcmx5IHVzZWQgcGlwZXMgZnJvbSB0aGUgdGFyZ2V0LlxuICAgKiBOb3RlOiB0aGlzIGxpc3QgKmV4Y2x1ZGVzKiBwaXBlcyBmcm9tIGBAZGVmZXJgIGJsb2Nrcy5cbiAgICovXG4gIGdldEVhZ2VybHlVc2VkUGlwZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgYWxsIGBAZGVmZXJgIGJsb2NrcyB1c2VkIGJ5IHRoZSB0YXJnZXQuXG4gICAqL1xuICBnZXREZWZlckJsb2NrcygpOiBEZWZlcnJlZEJsb2NrW107XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVsZW1lbnQgdGhhdCBhIHNwZWNpZmljIGRlZmVycmVkIGJsb2NrIHRyaWdnZXIgaXMgdGFyZ2V0aW5nLlxuICAgKiBAcGFyYW0gYmxvY2sgQmxvY2sgdGhhdCB0aGUgdHJpZ2dlciBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gdHJpZ2dlciBUcmlnZ2VyIHdob3NlIHRhcmdldCBpcyBiZWluZyBsb29rZWQgdXAuXG4gICAqL1xuICBnZXREZWZlcnJlZFRyaWdnZXJUYXJnZXQoYmxvY2s6IERlZmVycmVkQmxvY2ssIHRyaWdnZXI6IERlZmVycmVkVHJpZ2dlcik6IEVsZW1lbnQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZ2l2ZW4gbm9kZSBpcyBsb2NhdGVkIGluIGEgYEBkZWZlcmAgYmxvY2suXG4gICAqL1xuICBpc0RlZmVycmVkKG5vZGU6IEVsZW1lbnQpOiBib29sZWFuO1xufVxuIl19
|