semantifold 0.5.0 → 0.7.0
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 +15 -9
- package/build/index.d.ts +8 -8
- package/build/index.d.ts.map +1 -1
- package/build/index.js +6 -6
- package/build/src/backends/android.js +8 -4
- package/build/src/backends/dart.d.ts +19 -0
- package/build/src/backends/dart.d.ts.map +1 -1
- package/build/src/backends/dart.js +28 -16
- package/build/src/backends/flutter.d.ts +51 -0
- package/build/src/backends/flutter.d.ts.map +1 -0
- package/build/src/backends/flutter.js +1362 -0
- package/build/src/backends/identifiers.d.ts +6 -0
- package/build/src/backends/identifiers.d.ts.map +1 -1
- package/build/src/backends/identifiers.js +28 -5
- package/build/src/backends/ios.js +2 -2
- package/build/src/backends/native-validation.d.ts +2 -2
- package/build/src/backends/native-validation.d.ts.map +1 -1
- package/build/src/backends/native-validation.js +2 -2
- package/build/src/backends/program.d.ts +4 -4
- package/build/src/backends/program.d.ts.map +1 -1
- package/build/src/backends/program.js +4 -4
- package/build/src/backends/scalars.d.ts.map +1 -1
- package/build/src/backends/scalars.js +2 -1
- package/build/src/backends/shared.d.ts +7 -0
- package/build/src/backends/shared.d.ts.map +1 -1
- package/build/src/backends/shared.js +14 -9
- package/build/src/backends/zig-runtime.d.ts +5 -0
- package/build/src/backends/zig-runtime.d.ts.map +1 -0
- package/build/src/backends/zig-runtime.js +92 -0
- package/build/src/backends/zig-validation.d.ts +9 -0
- package/build/src/backends/zig-validation.d.ts.map +1 -0
- package/build/src/backends/zig-validation.js +73 -0
- package/build/src/backends/zig.d.ts +42 -0
- package/build/src/backends/zig.d.ts.map +1 -0
- package/build/src/backends/zig.js +584 -0
- package/build/src/frontends/scalars.d.ts.map +1 -1
- package/build/src/frontends/scalars.js +2 -1
- package/build/src/frontends/zig-parser.d.ts +31 -0
- package/build/src/frontends/zig-parser.d.ts.map +1 -0
- package/build/src/frontends/zig-parser.js +17 -0
- package/build/src/frontends/zig.d.ts +14 -0
- package/build/src/frontends/zig.d.ts.map +1 -0
- package/build/src/frontends/zig.js +970 -0
- package/build/src/language-registry.d.ts.map +1 -1
- package/build/src/language-registry.js +40 -1
- package/build/src/mapping.js +2 -2
- package/build/src/semantic/provenance.js +3 -3
- package/build/src/semantic/types.d.ts +154 -4
- package/build/src/semantic/types.d.ts.map +1 -1
- package/build/src/semantic/types.js +39 -3
- package/build/src/semantic/validate.js +2 -2
- package/build/src/toolchains.d.ts +6 -0
- package/build/src/toolchains.d.ts.map +1 -1
- package/build/src/toolchains.js +2 -1
- package/build/src/zig-bindings.d.ts +10 -0
- package/build/src/zig-bindings.d.ts.map +1 -0
- package/build/src/zig-bindings.js +54 -0
- package/docs/android.md +7 -3
- package/docs/architecture.md +13 -5
- package/docs/flutter.md +47 -0
- package/docs/goals.md +1 -1
- package/docs/language-support.md +16 -5
- package/docs/parser-qualification.md +31 -1
- package/docs/source-maps.md +7 -3
- package/docs/testing.md +47 -4
- package/docs/zig.md +33 -0
- package/index.js +5 -5
- package/node_modules/semantifold-tree-sitter-zig-internal/LICENSE +15 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/README.md +5 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/README.md +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/binding.gyp +29 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding.cc +20 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/binding_test.js +9 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.d.ts +28 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/bindings/node/index.js +11 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/grammar.js +900 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/package.json +57 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/darwin-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/darwin-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/linux-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/linux-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/win32-arm64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/prebuilds/win32-x64/@tree-sitter-grammars+tree-sitter-zig.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/folds.scm +23 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/highlights.scm +291 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/indents.scm +22 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/queries/injections.scm +10 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/grammar.json +6570 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/node-types.json +3178 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/parser.c +169829 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/alloc.h +54 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/array.h +291 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/src/tree_sitter/parser.h +266 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter-zig.wasm +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/@tree-sitter-grammars/tree-sitter-zig/tree-sitter.json +38 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/README.md +128 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/binding.gyp +80 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/index.js +916 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/package.json +76 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/binding.cc +35 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/conversions.h +22 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.cc +106 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/language.h +17 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.cc +70 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/logger.h +19 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.cc +1088 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/node.h +30 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.cc +306 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/parser.h +35 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.cc +397 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/query.h +40 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.cc +316 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree.h +45 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/tree-sitter.d.ts +1042 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1318 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +223 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +297 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +435 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +920 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2165 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +266 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +206 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4187 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +130 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1066 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +712 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +83 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1302 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1859 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/package.json +21 -0
- package/node_modules/semantifold-tree-sitter-zig-internal/src/zig.js +134 -0
- package/package.json +11 -6
- package/src/backends/android.js +7 -3
- package/src/backends/dart.js +28 -15
- package/src/backends/flutter.js +1465 -0
- package/src/backends/identifiers.js +28 -4
- package/src/backends/ios.js +1 -1
- package/src/backends/native-validation.js +1 -1
- package/src/backends/program.js +3 -3
- package/src/backends/scalars.js +1 -0
- package/src/backends/shared.js +15 -11
- package/src/backends/zig-runtime.js +93 -0
- package/src/backends/zig-validation.js +68 -0
- package/src/backends/zig.js +579 -0
- package/src/frontends/scalars.js +1 -0
- package/src/frontends/zig-parser.js +20 -0
- package/src/frontends/zig.js +994 -0
- package/src/language-registry.js +40 -0
- package/src/mapping.js +1 -1
- package/src/semantic/provenance.js +2 -2
- package/src/semantic/types.js +41 -2
- package/src/semantic/validate.js +1 -1
- package/src/toolchains.js +1 -0
- package/src/zig-bindings.js +46 -0
|
@@ -42,6 +42,12 @@ export declare function isCppIdentifier(name: string): boolean;
|
|
|
42
42
|
* @returns {boolean} Whether ordinary Rust syntax can represent the name safely.
|
|
43
43
|
*/
|
|
44
44
|
export declare function isRustIdentifier(name: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Protects Zig keywords, scalar names, entry plumbing, builtins, and the support namespace.
|
|
47
|
+
* @param {string} name - Caller-owned function or binding name.
|
|
48
|
+
* @returns {boolean} Whether ordinary unquoted Zig syntax can preserve the name.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isZigIdentifier(name: string): boolean;
|
|
45
51
|
/**
|
|
46
52
|
* Protects Swift keywords, scalar names, entry plumbing, and target-only helper names.
|
|
47
53
|
* @param {string} name - Caller-owned function or binding name.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../../src/backends/identifiers.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identifiers.d.ts","sourceRoot":"","sources":["../../../src/backends/identifiers.js"],"names":[],"mappings":"AAkOA;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EANtC,OAAO,sBAAsB,EAAE,eAMO,EAAE,IAAI,EAL5C,OAK4C,EAAE,IAAI,EAJlD,MAIkD,EAAE,QAAQ,EAH5D,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGY,GAF1D,IAAI,CAmBhB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAHvB,MAGuB,GAFrB,OAAO,CAMnB;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAN7C,OAAO,sBAAsB,EAAE,eAMc,EAAE,IAAI,EALnD,OAKmD,EAAE,IAAI,EAJzD,MAIyD,EAAE,QAAQ,EAHnE,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGmB,GAFjE,IAAI,CAchB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAL1C,OAAO,sBAAsB,EAAE,eAKW,EAAE,IAAI,EAJhD,OAIgD,EAAE,QAAQ,EAH1D,OAAO,sBAAsB,EAAE,cAAc,GAAG,SAGU,GAFxD,IAAI,CAYhB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAHzB,MAGyB,GAFvB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAH1B,MAG0B,GAFxB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAHzB,MAGyB,GAFvB,OAAO,CAKnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAH3B,MAG2B,GAFzB,OAAO,CAInB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAH5B,MAG4B,GAF1B,OAAO,CAKnB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAH1B,MAG0B,GAFxB,OAAO,CAKnB"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
import { unsupportedCapability } from "../diagnostic.js";
|
|
3
|
-
/** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios">, RegExp>} */
|
|
3
|
+
/** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios" | "flutter">, RegExp>} */
|
|
4
4
|
const identifierPatterns = {
|
|
5
5
|
android: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
|
|
6
6
|
dart: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
|
|
7
7
|
kotlin: /^(?:_|\p{L})(?:_|\p{L}|\p{Nd})*$/u,
|
|
8
8
|
swift: /^(?:_|\p{XID_Start})(?:_|\p{XID_Continue})*$/u,
|
|
9
9
|
rust: /^[A-Za-z_][A-Za-z0-9_]*$/u,
|
|
10
|
+
zig: /^[A-Za-z_][A-Za-z0-9_]*$/u,
|
|
10
11
|
cpp: /^[A-Za-z][A-Za-z0-9_]*$/u,
|
|
11
12
|
c: /^[A-Za-z][A-Za-z0-9_]*$/u,
|
|
12
13
|
csharp: /^[A-Za-z_][A-Za-z0-9_]*$/u,
|
|
@@ -19,7 +20,7 @@ const identifierPatterns = {
|
|
|
19
20
|
typescript: /^[A-Za-z_$][A-Za-z0-9_$]*$/u,
|
|
20
21
|
wasm: /^(?:[$_]|\p{XID_Start})(?:[$_]|\p{XID_Continue})*$/u
|
|
21
22
|
};
|
|
22
|
-
/** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios">, Set<string>>} */
|
|
23
|
+
/** @type {Record<Exclude<import("../semantic/types.js").BackendLanguage, "ios" | "flutter">, Set<string>>} */
|
|
23
24
|
const reservedWords = {
|
|
24
25
|
android: new Set([
|
|
25
26
|
"as", "break", "class", "continue", "do", "else", "false", "for", "fun", "if", "in", "interface", "is", "null",
|
|
@@ -57,6 +58,18 @@ const reservedWords = {
|
|
|
57
58
|
"unsafe", "use", "where", "while", "abstract", "become", "box", "do", "final", "macro", "override", "priv", "typeof", "unsized", "virtual",
|
|
58
59
|
"yield", "try", "union", "_", "main", "String", "std", "i64", "bool"
|
|
59
60
|
]),
|
|
61
|
+
zig: new Set([
|
|
62
|
+
"addrspace", "align", "allowzero", "and", "anyerror", "anyframe", "anyopaque", "anytype", "asm", "async", "await", "break", "callconv",
|
|
63
|
+
"catch", "comptime", "const", "continue", "defer", "else", "enum", "errdefer", "error", "export", "extern", "false",
|
|
64
|
+
"fn", "for", "if", "inline", "linksection", "noalias", "noinline", "nosuspend", "null", "opaque", "or", "orelse",
|
|
65
|
+
"packed", "pub", "resume", "return", "struct", "suspend", "switch", "test", "threadlocal", "true", "try", "union",
|
|
66
|
+
"unreachable", "usingnamespace", "var", "volatile", "while", "_", "main", "std", "bool", "c_char", "c_int", "c_long",
|
|
67
|
+
"c_longdouble", "c_longlong", "c_short", "c_uint", "c_ulong", "c_ulonglong", "c_ushort", "comptime_float",
|
|
68
|
+
"comptime_int", "f16", "f32", "f64", "f80", "f128", "isize", "noreturn", "type", "undefined", "usize", "void",
|
|
69
|
+
"semantifold_arena", "semantifold_fail", "semantifold_integer_add", "semantifold_integer_subtract",
|
|
70
|
+
"semantifold_integer_multiply", "semantifold_integer_negate", "semantifold_string_concat", "semantifold_string_equal",
|
|
71
|
+
"semantifold_string_not_equal", "semantifold_print_integer", "semantifold_print_boolean", "semantifold_print_string"
|
|
72
|
+
]),
|
|
60
73
|
cpp: new Set([
|
|
61
74
|
"alignas", "alignof", "and", "and_eq", "asm", "auto", "bitand", "bitor", "bool", "break", "case", "catch", "char", "char8_t", "char16_t", "char32_t", "class", "compl", "concept", "const", "consteval", "constexpr", "constinit", "const_cast", "continue", "co_await", "co_return", "co_yield", "decltype", "default", "delete", "do", "double", "dynamic_cast", "else", "enum", "explicit", "export", "extern", "false", "float", "for", "friend", "goto", "if", "inline", "int", "long", "mutable", "namespace", "new", "noexcept", "not", "not_eq", "nullptr", "operator", "or", "or_eq", "private", "protected", "public", "register", "reinterpret_cast", "requires", "return", "short", "signed", "sizeof", "static", "static_assert", "static_cast", "struct", "switch", "template", "this", "thread_local", "throw", "true", "try", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile", "wchar_t", "while", "xor", "xor_eq", "std", "string", "numeric_limits",
|
|
62
75
|
// The qualified libstdc++ <string> include chain also exposes these global names.
|
|
@@ -217,11 +230,12 @@ export function validateTargetIdentifier(language, name, role, location) {
|
|
|
217
230
|
if (typeof name != "string")
|
|
218
231
|
unsupportedCapability(language, `${role} identifier`, location);
|
|
219
232
|
const reservedName = language == "php" ? name.toLowerCase() : name;
|
|
220
|
-
const syntaxLanguage = language == "ios" ? "swift" : language;
|
|
233
|
+
const syntaxLanguage = language == "ios" ? "swift" : language == "flutter" ? "dart" : language;
|
|
221
234
|
if (!identifierPatterns[syntaxLanguage].test(name) || reservedWords[syntaxLanguage].has(reservedName) ||
|
|
222
235
|
language == "python" && name.normalize("NFKC") != name ||
|
|
223
236
|
language == "c" && !isCIdentifier(name) ||
|
|
224
237
|
language == "rust" && !isRustIdentifier(name) ||
|
|
238
|
+
language == "zig" && !isZigIdentifier(name) ||
|
|
225
239
|
language == "cpp" && !isCppIdentifier(name) ||
|
|
226
240
|
language == "dart" && !isDartIdentifier(name) ||
|
|
227
241
|
language == "swift" && (!isSwiftIdentifier(name) || name.normalize("NFC") != name) ||
|
|
@@ -270,7 +284,7 @@ export function validateTargetTypeIdentifier(language, name, location) {
|
|
|
270
284
|
unsupportedCapability(language, `record type identifier '${String(name)}'`, location);
|
|
271
285
|
}
|
|
272
286
|
const reservedName = language == "php" ? name.toLowerCase() : name;
|
|
273
|
-
const syntaxLanguage = language == "ios" ? "swift" : language;
|
|
287
|
+
const syntaxLanguage = language == "ios" ? "swift" : language == "flutter" ? "dart" : language;
|
|
274
288
|
if (reservedWords[syntaxLanguage].has(reservedName) || reservedTypeNames[language]?.has(reservedName)) {
|
|
275
289
|
unsupportedCapability(language, `record type identifier '${name}'`, location);
|
|
276
290
|
}
|
|
@@ -291,6 +305,15 @@ export function isCppIdentifier(name) {
|
|
|
291
305
|
export function isRustIdentifier(name) {
|
|
292
306
|
return identifierPatterns.rust.test(name) && !reservedWords.rust.has(name) && !name.startsWith("semantifold_");
|
|
293
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Protects Zig keywords, scalar names, entry plumbing, builtins, and the support namespace.
|
|
310
|
+
* @param {string} name - Caller-owned function or binding name.
|
|
311
|
+
* @returns {boolean} Whether ordinary unquoted Zig syntax can preserve the name.
|
|
312
|
+
*/
|
|
313
|
+
export function isZigIdentifier(name) {
|
|
314
|
+
return identifierPatterns.zig.test(name) && !reservedWords.zig.has(name) && !/^[iu][0-9]+$/u.test(name) &&
|
|
315
|
+
!name.startsWith("semantifold_");
|
|
316
|
+
}
|
|
294
317
|
/**
|
|
295
318
|
* Protects Swift keywords, scalar names, entry plumbing, and target-only helper names.
|
|
296
319
|
* @param {string} name - Caller-owned function or binding name.
|
|
@@ -317,4 +340,4 @@ export function isDartIdentifier(name) {
|
|
|
317
340
|
return identifierPatterns.dart.test(name) && !reservedWords.dart.has(name) &&
|
|
318
341
|
!name.startsWith("_semantifold") && name.normalize("NFC") == name;
|
|
319
342
|
}
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZHMvaWRlbnRpZmllcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRXRELDZGQUE2RjtBQUM3RixNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLE9BQU8sRUFBRSxtQ0FBbUM7SUFDNUMsSUFBSSxFQUFFLG1DQUFtQztJQUN6QyxNQUFNLEVBQUUsbUNBQW1DO0lBQzNDLEtBQUssRUFBRSwrQ0FBK0M7SUFDdEQsSUFBSSxFQUFFLDJCQUEyQjtJQUNqQyxHQUFHLEVBQUUsMEJBQTBCO0lBQy9CLENBQUMsRUFBRSwwQkFBMEI7SUFDN0IsTUFBTSxFQUFFLDJCQUEyQjtJQUNuQyxFQUFFLEVBQUUsMkJBQTJCO0lBQy9CLElBQUksRUFBRSw2QkFBNkI7SUFDbkMsVUFBVSxFQUFFLDZCQUE2QjtJQUN6QyxHQUFHLEVBQUUsMkJBQTJCO0lBQ2hDLE1BQU0sRUFBRSwrQ0FBK0M7SUFDdkQsSUFBSSxFQUFFLHdCQUF3QjtJQUM5QixVQUFVLEVBQUUsNkJBQTZCO0lBQ3pDLElBQUksRUFBRSxxREFBcUQ7Q0FDNUQsQ0FBQTtBQUVELGtHQUFrRztBQUNsRyxNQUFNLGFBQWEsR0FBRztJQUNwQixPQUFPLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDZixJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTTtRQUM5RyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFR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LEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTTtRQUMxSSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVM7UUFDMUksT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNO0tBQ3JFLENBQUM7SUFDRixHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDWCxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxT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LE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDMUcsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDcEcsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUMxRyxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRO1FBQ3RHLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVM7UUFDekcsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRO0tBQzdELENBQUM7SUFDRixNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDZCxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQ3RHLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTztRQUN0RCxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUNwRyxVQUFVLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVE7UUFDekgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNO1FBQ3hHLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07UUFDNUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQzFHLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVO1FBQ2pILFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUTtRQUNoSCxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU87UUFDL0csV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU07UUFDNUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTztLQUNsQyxDQUFDO0lBQ0YsRUFBRSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1YsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNO1FBQ3RHLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLO1FBQ3JHLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSztLQUMxQixDQUFDO0lBQ0YsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1osR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVO1FBQzVHLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSztRQUM1RyxNQUFNLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSztRQUN6RyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFP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RUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU87UUFDbEcsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQ3BHLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPO1FBQ3hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVc7S0FDcEYsQ0FBQztJQUNGLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNaLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNO1FBQzNHLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVE7UUFDeEcsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTztRQUN6RyxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTztLQUM1QyxDQUFDO0lBQ0YsVUFBVSxFQUFFLElBQUksR0FBRyxDQUFDO1FB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QUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge3Vuc3VwcG9ydGVkQ2FwYWJpbGl0eX0gZnJvbSBcIi4uL2RpYWdub3N0aWMuanNcIlxuXG4vKiogQHR5cGUge1JlY29yZDxFeGNsdWRlPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZSwgXCJpb3NcIj4sIFJlZ0V4cD59ICovXG5jb25zdCBpZGVudGlmaWVyUGF0dGVybnMgPSB7XG4gIGFuZHJvaWQ6IC9eKD86X3xcXHB7TH0pKD86X3xcXHB7TH18XFxwe05kfSkqJC91LFxuICBkYXJ0OiAvXig/Ol98XFxwe0x9KSg/Ol98XFxwe0x9fFxccHtOZH0pKiQvdSxcbiAga290bGluOiAvXig/Ol98XFxwe0x9KSg/Ol98XFxwe0x9fFxccHtOZH0pKiQvdSxcbiAgc3dpZnQ6IC9eKD86X3xcXHB7WElEX1N0YXJ0fSkoPzpffFxccHtYSURfQ29udGludWV9KSokL3UsXG4gIHJ1c3Q6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgY3BwOiAvXltBLVphLXpdW0EtWmEtejAtOV9dKiQvdSxcbiAgYzogL15bQS1aYS16XVtBLVphLXowLTlfXSokL3UsXG4gIGNzaGFycDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBnbzogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBqYXZhOiAvXltBLVphLXpfJF1bQS1aYS16MC05XyRdKiQvdSxcbiAgamF2YXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHBocDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBweXRob246IC9eKD86X3xcXHB7WElEX1N0YXJ0fSkoPzpffFxccHtYSURfQ29udGludWV9KSokL3UsXG4gIHJ1Ynk6IC9eW2Etel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgdHlwZXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHdhc206IC9eKD86WyRfXXxcXHB7WElEX1N0YXJ0fSkoPzpbJF9dfFxccHtYSURfQ29udGludWV9KSokL3Vcbn1cblxuLyoqIEB0eXBlIHtSZWNvcmQ8RXhjbHVkZTxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2UsIFwiaW9zXCI+LCBTZXQ8c3RyaW5nPj59ICovXG5jb25zdCByZXNlcnZlZFdvcmRzID0ge1xuICBhbmRyb2lkOiBuZXcgU2V0KFtcbiAgICBcImFzXCIsIFwiYnJlYWtcIiwgXCJjbGFzc1wiLCBcImNvbnRpbnVlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZmFsc2VcIiwgXCJmb3JcIiwgXCJmdW5cIiwgXCJpZlwiLCBcImluXCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJudWxsXCIsXG4gICAgXCJvYmplY3RcIiwgXCJwYWNrYWdlXCIsIFwicmV0dXJuXCIsIFwic3VwZXJcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWFsaWFzXCIsIFwidHlwZW9mXCIsIFwidmFsXCIsIFwidmFyXCIsIFwid2hlblwiLFxuICAgIFwid2hpbGVcIiwgXCJfXCIsIFwibWFpblwiLCBcInByaW50bG5cIiwgXCJMb25nXCIsIFwiQm9vbGVhblwiLCBcIlN0cmluZ1wiLCBcIk1hdGhcIiwgXCJBcml0aG1ldGljRXhjZXB0aW9uXCJcbiAgXSksXG4gIGRhcnQ6IG5ldyBTZXQoW1xuICAgIFwiRnVuY3Rpb25cIiwgXCJOZXZlclwiLCBcIk9iamVjdFwiLCBcIlJhbmdlRXJyb3JcIiwgXCJTdHJpbmdcIiwgXCJhYnN0cmFjdFwiLCBcImFzXCIsIFwiYXNzZXJ0XCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJhc2VcIixcbiAgICBcImJvb2xcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImNvdmFyaWFudFwiLCBcImRlZmF1bHRcIiwgXCJkZWZlcnJlZFwiLCBcImRvXCIsXG4gICAgXCJkb3VibGVcIiwgXCJkeW5hbWljXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHBvcnRcIiwgXCJleHRlbmRzXCIsIFwiZXh0ZW5zaW9uXCIsIFwiZXh0ZXJuYWxcIiwgXCJmYWN0b3J5XCIsIFwiZmFsc2VcIiwgXCJmaW5hbFwiLFxuICAgIFwiZmluYWxseVwiLCBcImZvclwiLCBcImdldFwiLCBcImhpZGVcIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbXBvcnRcIiwgXCJpblwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImlzXCIsIFwibGF0ZVwiLCBcImxpYnJhcnlcIixcbiAgICBcIm1haW5cIiwgXCJtaXhpblwiLCBcIm5hdGl2ZVwiLCBcIm5ld1wiLCBcIm51bGxcIiwgXCJudW1cIiwgXCJvZlwiLCBcIm9uXCIsIFwib3BlcmF0b3JcIiwgXCJwYXJ0XCIsIFwicHJpbnRcIiwgXCJyZXF1aXJlZFwiLCBcInJldGhyb3dcIixcbiAgICBcInJldHVyblwiLCBcInNlYWxlZFwiLCBcInNldFwiLCBcInNob3dcIiwgXCJzdGF0aWNcIiwgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInN5bmNcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWRlZlwiLFxuICAgIFwidmFyXCIsIFwidm9pZFwiLCBcIndoZW5cIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiLCBcIkJpZ0ludFwiLCBcIl9cIlxuICBdKSxcbiAga290bGluOiBuZXcgU2V0KFtcbiAgICBcImFzXCIsIFwiYnJlYWtcIiwgXCJjbGFzc1wiLCBcImNvbnRpbnVlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZmFsc2VcIiwgXCJmb3JcIiwgXCJmdW5cIiwgXCJpZlwiLCBcImluXCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJudWxsXCIsXG4gICAgXCJvYmplY3RcIiwgXCJwYWNrYWdlXCIsIFwicmV0dXJuXCIsIFwic3VwZXJcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWFsaWFzXCIsIFwidHlwZW9mXCIsIFwidmFsXCIsIFwidmFyXCIsIFwid2hlblwiLFxuICAgIFwid2hpbGVcIiwgXCJfXCIsIFwibWFpblwiLCBcInByaW50bG5cIiwgXCJMb25nXCIsIFwiQm9vbGVhblwiLCBcIlN0cmluZ1wiLCBcIk1hdGhcIiwgXCJBcml0aG1ldGljRXhjZXB0aW9uXCJcbiAgXSksXG4gIHN3aWZ0OiBuZXcgU2V0KFtcbiAgICBcIkFueVwiLCBcIlNlbGZcIiwgXCJUeXBlXCIsIFwiUHJvdG9jb2xcIiwgXCJhY3RvclwiLCBcImFueVwiLCBcImFzXCIsIFwiYXNzb2NpYXRlZHR5cGVcIiwgXCJhc3NvY2lhdGl2aXR5XCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJvcnJvd2luZ1wiLFxuICAgIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNvbnN1bWVcIiwgXCJjb25zdW1pbmdcIiwgXCJjb250aW51ZVwiLCBcImNvbnZlbmllbmNlXCIsIFwiY29weVwiLCBcImRlZmF1bHRcIiwgXCJkZWZlclwiLCBcImRlaW5pdFwiLFxuICAgIFwiZGlkU2V0XCIsIFwiZGlzdHJpYnV0ZWRcIiwgXCJkb1wiLCBcImR5bmFtaWNcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4dGVuc2lvblwiLCBcImZhbGx0aHJvdWdoXCIsIFwiZmFsc2VcIiwgXCJmaWxlcHJpdmF0ZVwiLCBcImZpbmFsXCIsIFwiZm9yXCIsXG4gICAgXCJmdW5jXCIsIFwiZ2V0XCIsIFwiZ3VhcmRcIiwgXCJpZlwiLCBcImltcG9ydFwiLCBcImluXCIsIFwiaW5kaXJlY3RcIiwgXCJpbmZpeFwiLCBcImluaXRcIiwgXCJpbm91dFwiLCBcImludGVybmFsXCIsIFwiaXNcIiwgXCJpc29sYXRlZFwiLCBcImxhenlcIixcbiAgICBcImxldFwiLCBcIm1hY3JvXCIsIFwibXV0YXRpbmdcIiwgXCJuaWxcIiwgXCJub25pc29sYXRlZFwiLCBcIm5vbm11dGF0aW5nXCIsIFwib3BlblwiLCBcIm9wZXJhdG9yXCIsIFwib3B0aW9uYWxcIiwgXCJvdmVycmlkZVwiLCBcInBhY2thZ2VcIixcbiAgICBcInBvc3RmaXhcIiwgXCJwcmVjZWRlbmNlXCIsIFwicHJlY2VkZW5jZWdyb3VwXCIsIFwicHJlZml4XCIsIFwicHJpdmF0ZVwiLCBcInByb3RvY29sXCIsIFwicHVibGljXCIsIFwicmVwZWF0XCIsIFwicmVxdWlyZWRcIiwgXCJyZXRocm93c1wiLCBcInJldHVyblwiLFxuICAgIFwic2FmZVwiLCBcInNlbGZcIiwgXCJzZW5kaW5nXCIsIFwic2V0XCIsIFwic29tZVwiLCBcInN0YXRpY1wiLCBcInN0cnVjdFwiLCBcInN1YnNjcmlwdFwiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwidGhyb3dzXCIsIFwidHJ1ZVwiLCBcInRyeVwiLFxuICAgIFwidHlwZWFsaWFzXCIsIFwidW5vd25lZFwiLCBcInVuc2FmZVwiLCBcInZhclwiLCBcIndlYWtcIiwgXCJ3aGVyZVwiLCBcIndoaWxlXCIsIFwid2lsbFNldFwiLCBcInlpZWxkXCIsIFwiX1wiLCBcIkJvb2xcIiwgXCJJbnRcIiwgXCJJbnQ2NFwiLCBcIlN0cmluZ1wiLFxuICAgIFwiU3dpZnRcIiwgXCJtYWluXCIsIFwicHJpbnRcIlxuICBdKSxcbiAgcnVzdDogbmV3IFNldChbXG4gICAgXCJhc1wiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJicmVha1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJjcmF0ZVwiLCBcImR5blwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXh0ZXJuXCIsIFwiZmFsc2VcIiwgXCJmblwiLCBcImZvclwiLCBcImlmXCIsIFwiaW1wbFwiLCBcImluXCIsXG4gICAgXCJsZXRcIiwgXCJsb29wXCIsIFwibWF0Y2hcIiwgXCJtb2RcIiwgXCJtb3ZlXCIsIFwibXV0XCIsIFwicHViXCIsIFwicmVmXCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcIlNlbGZcIiwgXCJzdGF0aWNcIiwgXCJzdHJ1Y3RcIiwgXCJzdXBlclwiLCBcInRyYWl0XCIsIFwidHJ1ZVwiLCBcInR5cGVcIixcbiAgICBcInVuc2FmZVwiLCBcInVzZVwiLCBcIndoZXJlXCIsIFwid2hpbGVcIiwgXCJhYnN0cmFjdFwiLCBcImJlY29tZVwiLCBcImJveFwiLCBcImRvXCIsIFwiZmluYWxcIiwgXCJtYWNyb1wiLCBcIm92ZXJyaWRlXCIsIFwicHJpdlwiLCBcInR5cGVvZlwiLCBcInVuc2l6ZWRcIiwgXCJ2aXJ0dWFsXCIsXG4gICAgXCJ5aWVsZFwiLCBcInRyeVwiLCBcInVuaW9uXCIsIFwiX1wiLCBcIm1haW5cIiwgXCJTdHJpbmdcIiwgXCJzdGRcIiwgXCJpNjRcIiwgXCJib29sXCJcbiAgXSksXG4gIGNwcDogbmV3IFNldChbXG4gICAgXCJhbGlnbmFzXCIsIFwiYWxpZ25vZlwiLCBcImFuZFwiLCBcImFuZF9lcVwiLCBcImFzbVwiLCBcImF1dG9cIiwgXCJiaXRhbmRcIiwgXCJiaXRvclwiLCBcImJvb2xcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjaGFyOF90XCIsIFwiY2hhcjE2X3RcIiwgXCJjaGFyMzJfdFwiLCBcImNsYXNzXCIsIFwiY29tcGxcIiwgXCJjb25jZXB0XCIsIFwiY29uc3RcIiwgXCJjb25zdGV2YWxcIiwgXCJjb25zdGV4cHJcIiwgXCJjb25zdGluaXRcIiwgXCJjb25zdF9jYXN0XCIsIFwiY29udGludWVcIiwgXCJjb19hd2FpdFwiLCBcImNvX3JldHVyblwiLCBcImNvX3lpZWxkXCIsIFwiZGVjbHR5cGVcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJkb3VibGVcIiwgXCJkeW5hbWljX2Nhc3RcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cGxpY2l0XCIsIFwiZXhwb3J0XCIsIFwiZXh0ZXJuXCIsIFwiZmFsc2VcIiwgXCJmbG9hdFwiLCBcImZvclwiLCBcImZyaWVuZFwiLCBcImdvdG9cIiwgXCJpZlwiLCBcImlubGluZVwiLCBcImludFwiLCBcImxvbmdcIiwgXCJtdXRhYmxlXCIsIFwibmFtZXNwYWNlXCIsIFwibmV3XCIsIFwibm9leGNlcHRcIiwgXCJub3RcIiwgXCJub3RfZXFcIiwgXCJudWxscHRyXCIsIFwib3BlcmF0b3JcIiwgXCJvclwiLCBcIm9yX2VxXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJlZ2lzdGVyXCIsIFwicmVpbnRlcnByZXRfY2FzdFwiLCBcInJlcXVpcmVzXCIsIFwicmV0dXJuXCIsIFwic2hvcnRcIiwgXCJzaWduZWRcIiwgXCJzaXplb2ZcIiwgXCJzdGF0aWNcIiwgXCJzdGF0aWNfYXNzZXJ0XCIsIFwic3RhdGljX2Nhc3RcIiwgXCJzdHJ1Y3RcIiwgXCJzd2l0Y2hcIiwgXCJ0ZW1wbGF0ZVwiLCBcInRoaXNcIiwgXCJ0aHJlYWRfbG9jYWxcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlZGVmXCIsIFwidHlwZWlkXCIsIFwidHlwZW5hbWVcIiwgXCJ1bmlvblwiLCBcInVuc2lnbmVkXCIsIFwidXNpbmdcIiwgXCJ2aXJ0dWFsXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsIFwid2NoYXJfdFwiLCBcIndoaWxlXCIsIFwieG9yXCIsIFwieG9yX2VxXCIsIFwic3RkXCIsIFwic3RyaW5nXCIsIFwibnVtZXJpY19saW1pdHNcIixcbiAgICAvLyBUaGUgcXVhbGlmaWVkIGxpYnN0ZGMrKyA8c3RyaW5nPiBpbmNsdWRlIGNoYWluIGFsc28gZXhwb3NlcyB0aGVzZSBnbG9iYWwgbmFtZXMuXG4gICAgXCJXRU9GXCIsIFwid2ludF90XCJcbiAgXSksXG4gIGM6IG5ldyBTZXQoW1xuICAgIFwiYXV0b1wiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNoYXJcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVmYXVsdFwiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHRlcm5cIixcbiAgICBcImZsb2F0XCIsIFwiZm9yXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW5saW5lXCIsIFwiaW50XCIsIFwibG9uZ1wiLCBcInJlZ2lzdGVyXCIsIFwicmVzdHJpY3RcIiwgXCJyZXR1cm5cIiwgXCJzaG9ydFwiLCBcInNpZ25lZFwiLFxuICAgIFwic2l6ZW9mXCIsIFwic3RhdGljXCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidHlwZWRlZlwiLCBcInVuaW9uXCIsIFwidW5zaWduZWRcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGlsZVwiLFxuICAgIFwiYm9vbFwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcIlRSVUVcIiwgXCJGQUxTRVwiLCBcImludDY0X3RcIiwgXCJ1aW50NjRfdFwiLCBcInNpemVfdFwiLCBcInB0cmRpZmZfdFwiLCBcIm1haW5cIiwgXCJOVUxMXCIsIFwiSU5UNjRfQ1wiLCBcIlVJTlQ2NF9DXCIsXG4gICAgXCJJTlQ2NF9NSU5cIiwgXCJJTlQ2NF9NQVhcIiwgXCJQVFJESUZGX01BWFwiLCBcIkNIQVJfQklUXCIsIFwic3RkaW5cIiwgXCJzdGRvdXRcIiwgXCJzdGRlcnJcIiwgXCJtYWxsb2NcIiwgXCJmcmVlXCIsIFwiZXhpdFwiLFxuICAgIFwiZndyaXRlXCIsIFwiZmZsdXNoXCIsIFwibWVtY3B5XCIsIFwibWVtY21wXCIsIFwiRklMRVwiLCBcImZwb3NfdFwiLCBcImRpdl90XCIsIFwibGRpdl90XCIsIFwibGxkaXZfdFwiLCBcIndjaGFyX3RcIiwgXCJtYXhfYWxpZ25fdFwiLFxuICAgIFwib2Zmc2V0b2ZcIiwgXCJhbGlnbmFzXCIsIFwiYWxpZ25vZlwiLCBcIm5vcmV0dXJuXCIsIFwidHJ1ZVwiLCBcImZhbHNlXCIsIFwiYXNzZXJ0XCIsIFwic3RhdGljX2Fzc2VydFwiLCBcImVycm5vXCIsXG4gICAgXCJFT0ZcIiwgXCJCVUZTSVpcIiwgXCJGT1BFTl9NQVhcIiwgXCJGSUxFTkFNRV9NQVhcIiwgXCJMX3RtcG5hbVwiLCBcIlNFRUtfQ1VSXCIsIFwiU0VFS19FTkRcIiwgXCJTRUVLX1NFVFwiLCBcIlRNUF9NQVhcIixcbiAgICBcIkVYSVRfRkFJTFVSRVwiLCBcIkVYSVRfU1VDQ0VTU1wiLCBcIk1CX0NVUl9NQVhcIiwgXCJNQl9MRU5fTUFYXCIsIFwiUkFORF9NQVhcIixcbiAgICBcInJlbW92ZVwiLCBcInJlbmFtZVwiLCBcInRtcGZpbGVcIiwgXCJ0bXBuYW1cIiwgXCJmY2xvc2VcIiwgXCJmb3BlblwiLCBcImZyZW9wZW5cIiwgXCJzZXRidWZcIiwgXCJzZXR2YnVmXCIsXG4gICAgXCJmcHJpbnRmXCIsIFwiZnNjYW5mXCIsIFwicHJpbnRmXCIsIFwic2NhbmZcIiwgXCJzbnByaW50ZlwiLCBcInNwcmludGZcIiwgXCJzc2NhbmZcIiwgXCJ2ZnByaW50ZlwiLCBcInZmc2NhbmZcIiwgXCJ2cHJpbnRmXCIsXG4gICAgXCJ2c2NhbmZcIiwgXCJ2c25wcmludGZcIiwgXCJ2c3ByaW50ZlwiLCBcInZzc2NhbmZcIiwgXCJmZ2V0Y1wiLCBcImZnZXRzXCIsIFwiZnB1dGNcIiwgXCJmcHV0c1wiLCBcImdldGNcIiwgXCJnZXRjaGFyXCIsXG4gICAgXCJwdXRjXCIsIFwicHV0Y2hhclwiLCBcInB1dHNcIiwgXCJ1bmdldGNcIiwgXCJmcmVhZFwiLCBcImZnZXRwb3NcIiwgXCJmc2Vla1wiLCBcImZzZXRwb3NcIiwgXCJmdGVsbFwiLCBcInJld2luZFwiLCBcImNsZWFyZXJyXCIsXG4gICAgXCJmZW9mXCIsIFwiZmVycm9yXCIsIFwicGVycm9yXCIsIFwiYXRvZlwiLCBcImF0b2lcIiwgXCJhdG9sXCIsIFwiYXRvbGxcIiwgXCJzdHJ0b2RcIiwgXCJzdHJ0b2ZcIiwgXCJzdHJ0b2xkXCIsIFwic3RydG9sXCIsXG4gICAgXCJzdHJ0b2xsXCIsIFwic3RydG91bFwiLCBcInN0cnRvdWxsXCIsIFwicmFuZFwiLCBcInNyYW5kXCIsIFwiYWxpZ25lZF9hbGxvY1wiLCBcImNhbGxvY1wiLCBcInJlYWxsb2NcIiwgXCJhYm9ydFwiLCBcImF0ZXhpdFwiLFxuICAgIFwiYXRfcXVpY2tfZXhpdFwiLCBcInF1aWNrX2V4aXRcIiwgXCJnZXRlbnZcIiwgXCJzeXN0ZW1cIiwgXCJic2VhcmNoXCIsIFwicXNvcnRcIiwgXCJhYnNcIiwgXCJsYWJzXCIsIFwibGxhYnNcIiwgXCJkaXZcIiwgXCJsZGl2XCIsXG4gICAgXCJsbGRpdlwiLCBcIm1ibGVuXCIsIFwibWJ0b3djXCIsIFwid2N0b21iXCIsIFwibWJzdG93Y3NcIiwgXCJ3Y3N0b21ic1wiLCBcIm1lbW1vdmVcIiwgXCJzdHJjcHlcIiwgXCJzdHJuY3B5XCIsIFwic3RyY2F0XCIsXG4gICAgXCJzdHJuY2F0XCIsIFwic3RyY21wXCIsIFwic3RyY29sbFwiLCBcInN0cm5jbXBcIiwgXCJzdHJ4ZnJtXCIsIFwibWVtY2hyXCIsIFwic3RyY2hyXCIsIFwic3RyY3NwblwiLCBcInN0cnBicmtcIiwgXCJzdHJyY2hyXCIsXG4gICAgXCJzdHJzcG5cIiwgXCJzdHJzdHJcIiwgXCJzdHJ0b2tcIiwgXCJtZW1zZXRcIiwgXCJzdHJlcnJvclwiLCBcInN0cmxlblwiXG4gIF0pLFxuICBjc2hhcnA6IG5ldyBTZXQoW1xuICAgIFwiX19hcmdsaXN0XCIsIFwiX19tYWtlcmVmXCIsIFwiX19yZWZ0eXBlXCIsIFwiX19yZWZ2YWx1ZVwiLCBcImFic3RyYWN0XCIsIFwiYWRkXCIsIFwiYWxpYXNcIiwgXCJhbGxvd3NcIiwgXCJhbmRcIiwgXCJhc1wiLFxuICAgIFwiYXNjZW5kaW5nXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJhc2VcIiwgXCJib29sXCIsIFwiYnJlYWtcIixcbiAgICBcImJ5XCIsIFwiYnl0ZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjaGVja2VkXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVjaW1hbFwiLCBcImRlZmF1bHRcIixcbiAgICBcImRlbGVnYXRlXCIsIFwiZGVzY2VuZGluZ1wiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZHluYW1pY1wiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXF1YWxzXCIsIFwiZXZlbnRcIiwgXCJleHBsaWNpdFwiLCBcImV4dGVuc2lvblwiLCBcImV4dGVyblwiLFxuICAgIFwiZmFsc2VcIiwgXCJmaWVsZFwiLCBcImZpbGVcIiwgXCJmaW5hbGx5XCIsIFwiZml4ZWRcIiwgXCJmbG9hdFwiLCBcImZvclwiLCBcImZvcmVhY2hcIiwgXCJmcm9tXCIsIFwiZ2V0XCIsIFwiZ2xvYmFsXCIsIFwiZ290b1wiLFxuICAgIFwiZ3JvdXBcIiwgXCJpZlwiLCBcImltcGxpY2l0XCIsIFwiaW5cIiwgXCJpbml0XCIsIFwiaW50XCIsIFwiaW50ZXJmYWNlXCIsIFwiaW50ZXJuYWxcIiwgXCJpbnRvXCIsIFwiaXNcIiwgXCJqb2luXCIsIFwibGV0XCIsIFwibG9ja1wiLFxuICAgIFwibG9uZ1wiLCBcIm1hbmFnZWRcIiwgXCJuYW1lb2ZcIiwgXCJuYW1lc3BhY2VcIiwgXCJuZXdcIiwgXCJuaW50XCIsIFwibm90XCIsIFwibm90bnVsbFwiLCBcIm51bGxcIiwgXCJudWludFwiLCBcIm9iamVjdFwiLCBcIm9uXCIsXG4gICAgXCJvcGVyYXRvclwiLCBcIm9yXCIsIFwib3JkZXJieVwiLCBcIm91dFwiLCBcIm92ZXJyaWRlXCIsIFwicGFyYW1zXCIsIFwicGFydGlhbFwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLFxuICAgIFwicmVjb3JkXCIsIFwicmVmXCIsIFwicmVtb3ZlXCIsIFwicmVxdWlyZWRcIiwgXCJyZXR1cm5cIiwgXCJzYnl0ZVwiLCBcInNjb3BlZFwiLCBcInNlYWxlZFwiLCBcInNlbGVjdFwiLCBcInNldFwiLCBcInNob3J0XCIsIFwic2l6ZW9mXCIsXG4gICAgXCJzdGFja2FsbG9jXCIsIFwic3RhdGljXCIsIFwic3RyaW5nXCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVvZlwiLCBcInVpbnRcIiwgXCJ1bG9uZ1wiLFxuICAgIFwidW5jaGVja2VkXCIsIFwidW5tYW5hZ2VkXCIsIFwidW5zYWZlXCIsIFwidXNob3J0XCIsIFwidXNpbmdcIiwgXCJ2YWx1ZVwiLCBcInZhclwiLCBcInZpcnR1YWxcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIiwgXCJ3aGVuXCIsXG4gICAgXCJ3aGVyZVwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIGdvOiBuZXcgU2V0KFtcbiAgICBcIl9cIiwgXCJicmVha1wiLCBcImRlZmF1bHRcIiwgXCJmdW5jXCIsIFwiaW50ZXJmYWNlXCIsIFwic2VsZWN0XCIsIFwiY2FzZVwiLCBcImRlZmVyXCIsIFwiZ29cIiwgXCJtYXBcIiwgXCJzdHJ1Y3RcIiwgXCJjaGFuXCIsXG4gICAgXCJlbHNlXCIsIFwiZ290b1wiLCBcInBhY2thZ2VcIiwgXCJzd2l0Y2hcIiwgXCJjb25zdFwiLCBcImZhbGx0aHJvdWdoXCIsIFwiaWZcIiwgXCJyYW5nZVwiLCBcInR5cGVcIiwgXCJjb250aW51ZVwiLCBcImZvclwiLFxuICAgIFwiaW1wb3J0XCIsIFwicmV0dXJuXCIsIFwidmFyXCJcbiAgXSksXG4gIGphdmE6IG5ldyBTZXQoW1xuICAgIFwiX1wiLCBcImFic3RyYWN0XCIsIFwiYXNzZXJ0XCIsIFwiYm9vbGVhblwiLCBcImJyZWFrXCIsIFwiYnl0ZVwiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNoYXJcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIixcbiAgICBcImRlZmF1bHRcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXhwb3J0c1wiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsIFwiZmluYWxseVwiLCBcImZsb2F0XCIsIFwiZm9yXCIsXG4gICAgXCJnb3RvXCIsIFwiaWZcIiwgXCJpbXBsZW1lbnRzXCIsIFwiaW1wb3J0XCIsIFwiaW5zdGFuY2VvZlwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImxvbmdcIiwgXCJtb2R1bGVcIiwgXCJuYXRpdmVcIiwgXCJuZXdcIixcbiAgICBcIm5vbi1zZWFsZWRcIiwgXCJudWxsXCIsIFwib3BlblwiLCBcIm9wZW5zXCIsIFwicGFja2FnZVwiLCBcInBlcm1pdHNcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHJvdmlkZXNcIiwgXCJwdWJsaWNcIixcbiAgICBcInJlY29yZFwiLCBcInJlcXVpcmVzXCIsIFwicmV0dXJuXCIsIFwic2VhbGVkXCIsIFwic2hvcnRcIiwgXCJzdGF0aWNcIiwgXCJzdHJpY3RmcFwiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3luY2hyb25pemVkXCIsXG4gICAgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0aHJvd3NcIiwgXCJ0b1wiLCBcInRyYW5zaWVudFwiLCBcInRyYW5zaXRpdmVcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidXNlc1wiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ2b2xhdGlsZVwiLFxuICAgIFwid2hlblwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIGphdmFzY3JpcHQ6IG5ldyBTZXQoW1xuICAgIFwiYXdhaXRcIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlYnVnZ2VyXCIsIFwiZGVmYXVsdFwiLCBcImRlbGV0ZVwiLCBcImRvXCIsIFwiZWxzZVwiLFxuICAgIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJmdW5jdGlvblwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsXG4gICAgXCJpbnN0YW5jZW9mXCIsIFwiaW50ZXJmYWNlXCIsIFwibGV0XCIsIFwibmV3XCIsIFwibnVsbFwiLCBcInBhY2thZ2VcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmV0dXJuXCIsIFwic3RhdGljXCIsXG4gICAgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlb2ZcIiwgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIlxuICBdKSxcbiAgcGhwOiBuZXcgU2V0KFtcbiAgICBcIl9faGFsdF9jb21waWxlclwiLCBcImFic3RyYWN0XCIsIFwiYW5kXCIsIFwiYXJyYXlcIiwgXCJhc1wiLCBcImJyZWFrXCIsIFwiY2FsbGFibGVcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNsb25lXCIsXG4gICAgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiZGVjbGFyZVwiLCBcImRlZmF1bHRcIiwgXCJkaWVcIiwgXCJkb1wiLCBcImVjaG9cIiwgXCJlbHNlXCIsIFwiZWxzZWlmXCIsIFwiZW1wdHlcIiwgXCJlbmRkZWNsYXJlXCIsXG4gICAgXCJlbmRmb3JcIiwgXCJlbmRmb3JlYWNoXCIsIFwiZW5kaWZcIiwgXCJlbmRzd2l0Y2hcIiwgXCJlbmR3aGlsZVwiLCBcImVudW1cIiwgXCJldmFsXCIsIFwiZXhpdFwiLCBcImV4dGVuZHNcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsXG4gICAgXCJmaW5hbGx5XCIsIFwiZm5cIiwgXCJmb3JcIiwgXCJmb3JlYWNoXCIsIFwiZnJvbVwiLCBcImZ1bmN0aW9uXCIsIFwiZ2xvYmFsXCIsIFwiZ290b1wiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImluY2x1ZGVcIixcbiAgICBcImluY2x1ZGVfb25jZVwiLCBcImluc3RhbmNlb2ZcIiwgXCJpbnN0ZWFkb2ZcIiwgXCJpbnRlcmZhY2VcIiwgXCJpc3NldFwiLCBcIml0ZXJhYmxlXCIsIFwibGlzdFwiLCBcIm1hdGNoXCIsIFwibWl4ZWRcIiwgXCJuYW1lc3BhY2VcIixcbiAgICBcIm5ldmVyXCIsIFwibmV3XCIsIFwibnVsbFwiLCBcIm9iamVjdFwiLCBcIm9yXCIsIFwicGFyZW50XCIsIFwicHJpbnRcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVhZG9ubHlcIiwgXCJyZXF1aXJlXCIsXG4gICAgXCJyZXF1aXJlX29uY2VcIiwgXCJyZXR1cm5cIiwgXCJzZWxmXCIsIFwic3RhdGljXCIsIFwic3dpdGNoXCIsIFwidGhyb3dcIiwgXCJ0cmFpdFwiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ1bnNldFwiLCBcInVzZVwiLCBcInZhclwiLFxuICAgIFwidm9pZFwiLCBcIndoaWxlXCIsIFwieG9yXCIsIFwieWllbGRcIlxuICBdKSxcbiAgcHl0aG9uOiBuZXcgU2V0KFtcbiAgICBcIkZhbHNlXCIsIFwiTm9uZVwiLCBcIlRydWVcIiwgXCJhbmRcIiwgXCJhc1wiLCBcImFzc2VydFwiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJib29sXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2xhc3NcIixcbiAgICBcImNvbnRpbnVlXCIsIFwiZGVmXCIsIFwiZGVsXCIsIFwiZWxpZlwiLCBcImVsc2VcIiwgXCJleGNlcHRcIiwgXCJleGVjXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZyb21cIiwgXCJnbG9iYWxcIiwgXCJpZlwiLFxuICAgIFwiaW1wb3J0XCIsIFwiaW5cIiwgXCJpbnRcIiwgXCJpc1wiLCBcImxhbWJkYVwiLCBcIm1hdGNoXCIsIFwibm9ubG9jYWxcIiwgXCJub3RcIiwgXCJvclwiLCBcInBhc3NcIiwgXCJwcmludFwiLFxuICAgIFwicmFpc2VcIiwgXCJyZXR1cm5cIiwgXCJzdHJcIiwgXCJ0cnlcIiwgXCJ0eXBlXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIiwgXCJfXCIsIFwiX19kZWJ1Z19fXCJcbiAgXSksXG4gIHJ1Ynk6IG5ldyBTZXQoW1xuICAgIFwiQkVHSU5cIiwgXCJFTkRcIiwgXCJfX0VOQ09ESU5HX19cIiwgXCJfX0VORF9fXCIsIFwiX19GSUxFX19cIiwgXCJfX0xJTkVfX1wiLCBcImFsaWFzXCIsIFwiYW5kXCIsIFwiYmVnaW5cIiwgXCJicmVha1wiLCBcImNhc2VcIixcbiAgICBcImNsYXNzXCIsIFwiZGVmXCIsIFwiZGVmaW5lZD9cIiwgXCJkb1wiLCBcImVsc2VcIiwgXCJlbHNpZlwiLCBcImVuZFwiLCBcImVuc3VyZVwiLCBcImZhbHNlXCIsIFwiZm9yXCIsIFwiaWZcIiwgXCJpblwiLCBcIm1vZHVsZVwiLFxuICAgIFwibmV4dFwiLCBcIm5pbFwiLCBcIm5vdFwiLCBcIm9yXCIsIFwicmVkb1wiLCBcInJlc2N1ZVwiLCBcInJldHJ5XCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcInN1cGVyXCIsIFwidGhlblwiLCBcInRydWVcIiwgXCJ1bmRlZlwiLFxuICAgIFwidW5sZXNzXCIsIFwidW50aWxcIiwgXCJ3aGVuXCIsIFwid2hpbGVcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICB0eXBlc2NyaXB0OiBuZXcgU2V0KFtcbiAgICBcImFic3RyYWN0XCIsIFwiYW55XCIsIFwiYXNcIiwgXCJhc3NlcnRzXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJvb2xlYW5cIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIixcbiAgICBcImNvbnN0cnVjdG9yXCIsIFwiY29udGludWVcIiwgXCJkZWJ1Z2dlclwiLCBcImRlY2xhcmVcIiwgXCJkZWZhdWx0XCIsIFwiZGVsZXRlXCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIixcbiAgICBcImZhbHNlXCIsIFwiZmluYWxseVwiLCBcImZvclwiLCBcImZyb21cIiwgXCJmdW5jdGlvblwiLCBcImdldFwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsIFwiaW5mZXJcIiwgXCJpbnN0YW5jZW9mXCIsXG4gICAgXCJpbnRlcmZhY2VcIiwgXCJpc1wiLCBcImtleW9mXCIsIFwibGV0XCIsIFwibW9kdWxlXCIsIFwibmFtZXNwYWNlXCIsIFwibmV2ZXJcIiwgXCJuZXdcIiwgXCJudWxsXCIsIFwibnVtYmVyXCIsIFwib2JqZWN0XCIsIFwib2ZcIixcbiAgICBcIm92ZXJyaWRlXCIsIFwicGFja2FnZVwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWFkb25seVwiLCBcInJlcXVpcmVcIiwgXCJyZXR1cm5cIiwgXCJzYXRpc2ZpZXNcIiwgXCJzZXRcIixcbiAgICBcInN0YXRpY1wiLCBcInN0cmluZ1wiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3ltYm9sXCIsIFwidGhpc1wiLCBcInRocm93XCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInR5cGVcIiwgXCJ0eXBlb2ZcIiwgXCJ1bmRlZmluZWRcIixcbiAgICBcInVuaXF1ZVwiLCBcInVua25vd25cIiwgXCJ1c2luZ1wiLCBcInZhclwiLCBcInZvaWRcIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICB3YXNtOiBuZXcgU2V0KClcbn1cblxuY29uc3QgcGhwSW52YWxpZFBhcmFtZXRlckJpbmRpbmdzID0gbmV3IFNldChbXG4gIFwiR0xPQkFMU1wiLCBcIl9DT09LSUVcIiwgXCJfRU5WXCIsIFwiX0ZJTEVTXCIsIFwiX0dFVFwiLCBcIl9QT1NUXCIsIFwiX1JFUVVFU1RcIiwgXCJfU0VSVkVSXCIsIFwiX1NFU1NJT05cIiwgXCJ0aGlzXCJcbl0pXG5jb25zdCBwaHBJbnZhbGlkQXNzaWduZWRCaW5kaW5ncyA9IG5ldyBTZXQoW1wiR0xPQkFMU1wiLCBcInRoaXNcIl0pXG5cbi8qKiBAdHlwZSB7UmVhZG9ubHk8UGFydGlhbDxSZWNvcmQ8aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlLCBTZXQ8c3RyaW5nPj4+Pn0gKi9cbmNvbnN0IHJlc2VydmVkVHlwZU5hbWVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIGphdmE6IG5ldyBTZXQoW1wiQm9vbGVhblwiLCBcIkludGVnZXJcIiwgXCJNYWluXCIsIFwiTWF0aFwiLCBcIk9iamVjdFwiLCBcIlN0cmluZ1wiLCBcIlN5c3RlbVwiXSksXG4gIGphdmFzY3JpcHQ6IG5ldyBTZXQoW1wiQXJyYXlcIiwgXCJCb29sZWFuXCIsIFwiTWFwXCIsIFwiTWF0aFwiLCBcIk51bWJlclwiLCBcIk9iamVjdFwiLCBcIlJlZmxlY3RcIiwgXCJTdHJpbmdcIl0pLFxuICBwaHA6IG5ldyBTZXQoW1xuICAgIFwiYWRkcmVzc2luZm9cIiwgXCJhbGxvd2R5bmFtaWNwcm9wZXJ0aWVzXCIsIFwiYXBwZW5kaXRlcmF0b3JcIiwgXCJhcmd1bWVudGNvdW50ZXJyb3JcIiwgXCJhcml0aG1ldGljZXJyb3JcIiwgXCJhcnJheWFjY2Vzc1wiLFxuICAgIFwiYXJyYXlpdGVyYXRvclwiLCBcImFycmF5b2JqZWN0XCIsIFwiYXNzZXJ0aW9uZXJyb3JcIiwgXCJhdHRyaWJ1dGVcIiwgXCJiYWNrZWRlbnVtXCIsIFwiYmFkZnVuY3Rpb25jYWxsZXhjZXB0aW9uXCIsXG4gICAgXCJiYWRtZXRob2RjYWxsZXhjZXB0aW9uXCIsIFwiY2FjaGluZ2l0ZXJhdG9yXCIsXG4gICAgXCJjYWxsYmFja2ZpbHRlcml0ZXJhdG9yXCIsIFwiY2xvc2VkZ2VuZXJhdG9yZXhjZXB0aW9uXCIsIFwiY2xvc3VyZVwiLCBcImNvbXBpbGVlcnJvclwiLCBcImNvdW50YWJsZVwiLCBcImRhdGVlcnJvclwiLCBcImRhdGVleGNlcHRpb25cIixcbiAgICBcImRhdGVpbnRlcnZhbFwiLCBcImRhdGVpbnZhbGlkb3BlcmF0aW9uZXhjZXB0aW9uXCIsIFwiZGF0ZWludmFsaWR0aW1lem9uZWV4Y2VwdGlvblwiLCBcImRhdGVtYWxmb3JtZWRpbnRlcnZhbHN0cmluZ2V4Y2VwdGlvblwiLFxuICAgIFwiZGF0ZW1hbGZvcm1lZHBlcmlvZHN0cmluZ2V4Y2VwdGlvblwiLCBcImRhdGVtYWxmb3JtZWRzdHJpbmdleGNlcHRpb25cIiwgXCJkYXRlb2JqZWN0ZXJyb3JcIiwgXCJkYXRlcGVyaW9kXCIsIFwiZGF0ZXJhbmdlZXJyb3JcIixcbiAgICBcImRhdGV0aW1lXCIsIFwiZGF0ZXRpbWVpbW11dGFibGVcIiwgXCJkYXRldGltZWludGVyZmFjZVwiLCBcImRhdGV0aW1lem9uZVwiLCBcImRlZmxhdGVjb250ZXh0XCIsIFwiZGVsYXllZHRhcmdldHZhbGlkYXRpb25cIixcbiAgICBcImRlcHJlY2F0ZWRcIiwgXCJkaXJlY3RvcnlcIiwgXCJkaXJlY3RvcnlpdGVyYXRvclwiLCBcImRpdmlzaW9uYnl6ZXJvZXJyb3JcIiwgXCJkb21haW5leGNlcHRpb25cIiwgXCJlbXB0eWl0ZXJhdG9yXCIsIFwiZXJyb3JcIixcbiAgICBcImVycm9yZXhjZXB0aW9uXCIsIFwiZXhjZXB0aW9uXCIsIFwiZmZpXCIsIFwiZmliZXJcIiwgXCJmaWJlcmVycm9yXCIsIFwiZmlsZXN5c3RlbWl0ZXJhdG9yXCIsIFwiZmlsdGVyaXRlcmF0b3JcIiwgXCJmaW5mb1wiLCBcImdlbmVyYXRvclwiLFxuICAgIFwiZ2xvYml0ZXJhdG9yXCIsIFwiaGFzaGNvbnRleHRcIiwgXCJpbmZpbml0ZWl0ZXJhdG9yXCIsIFwiaW5mbGF0ZWNvbnRleHRcIiwgXCJpbnRlcm5hbGl0ZXJhdG9yXCIsIFwiaW52YWxpZGFyZ3VtZW50ZXhjZXB0aW9uXCIsXG4gICAgXCJpdGVyYXRvclwiLCBcIml0ZXJhdG9yYWdncmVnYXRlXCIsIFwiaXRlcmF0b3JpdGVyYXRvclwiLCBcImpzb25leGNlcHRpb25cIiwgXCJqc29uc2VyaWFsaXphYmxlXCIsIFwibGVuZ3RoZXhjZXB0aW9uXCIsXG4gICAgXCJsaWJ4bWxlcnJvclwiLCBcImxpbWl0aXRlcmF0b3JcIiwgXCJsb2dpY2V4Y2VwdGlvblwiLCBcIm11bHRpcGxlaXRlcmF0b3JcIiwgXCJub2Rpc2NhcmRcIiwgXCJub3Jld2luZGl0ZXJhdG9yXCIsXG4gICAgXCJvcGVuc3NsYXN5bW1ldHJpY2tleVwiLCBcIm9wZW5zc2xjZXJ0aWZpY2F0ZVwiLCBcIm9wZW5zc2xjZXJ0aWZpY2F0ZXNpZ25pbmdyZXF1ZXN0XCIsXG4gICAgXCJvdXRvZmJvdW5kc2V4Y2VwdGlvblwiLCBcIm91dG9mcmFuZ2VleGNlcHRpb25cIiwgXCJvdXRlcml0ZXJhdG9yXCIsIFwib3ZlcmZsb3dleGNlcHRpb25cIiwgXCJvdmVycmlkZVwiLCBcInBhcmVudGl0ZXJhdG9yXCIsXG4gICAgXCJwYXJzZWVycm9yXCIsIFwicGRvXCIsIFwicGRvZXhjZXB0aW9uXCIsIFwicGRvcm93XCIsIFwicGRvc3RhdGVtZW50XCIsIFwicGhhclwiLCBcInBoYXJkYXRhXCIsIFwicGhhcmV4Y2VwdGlvblwiLCBcInBoYXJmaWxlaW5mb1wiLFxuICAgIFwicGhwX3VzZXJfZmlsdGVyXCIsIFwicGhwdG9rZW5cIiwgXCJwcm9wZXJ0eWhvb2t0eXBlXCIsIFwicmFuZ2VleGNlcHRpb25cIiwgXCJyZWN1cnNpdmVhcnJheWl0ZXJhdG9yXCIsIFwicmVjdXJzaXZlY2FjaGluZ2l0ZXJhdG9yXCIsXG4gICAgXCJyZWN1cnNpdmVjYWxsYmFja2ZpbHRlcml0ZXJhdG9yXCIsXG4gICAgXCJyZWN1cnNpdmVkaXJlY3RvcnlpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZWZpbHRlcml0ZXJhdG9yXCIsIFwicmVjdXJzaXZlaXRlcmF0b3JcIiwgXCJyZWN1cnNpdmVpdGVyYXRvcml0ZXJhdG9yXCIsXG4gICAgXCJyZWN1cnNpdmVyZWdleGl0ZXJhdG9yXCIsIFwicmVjdXJzaXZldHJlZWl0ZXJhdG9yXCIsIFwicmVmbGVjdGlvblwiLCBcInJlZmxlY3Rpb25hdHRyaWJ1dGVcIiwgXCJyZWZsZWN0aW9uY2xhc3NcIixcbiAgICBcInJlZmxlY3Rpb25jbGFzc2NvbnN0YW50XCIsIFwicmVmbGVjdGlvbmNvbnN0YW50XCIsIFwicmVmbGVjdGlvbmVudW1cIiwgXCJyZWZsZWN0aW9uZW51bWJhY2tlZGNhc2VcIiwgXCJyZWZsZWN0aW9uZW51bXVuaXRjYXNlXCIsXG4gICAgXCJyZWZsZWN0aW9uZXhjZXB0aW9uXCIsIFwicmVmbGVjdGlvbmV4dGVuc2lvblwiLCBcInJlZmxlY3Rpb25maWJlclwiLCBcInJlZmxlY3Rpb25mdW5jdGlvblwiLCBcInJlZmxlY3Rpb25mdW5jdGlvbmFic3RyYWN0XCIsXG4gICAgXCJyZWZsZWN0aW9uZ2VuZXJhdG9yXCIsIFwicmVmbGVjdGlvbmludGVyc2VjdGlvbnR5cGVcIiwgXCJyZWZsZWN0aW9ubWV0aG9kXCIsIFwicmVmbGVjdGlvbm5hbWVkdHlwZVwiLCBcInJlZmxlY3Rpb25vYmplY3RcIixcbiAgICBcInJlZmxlY3Rpb25wYXJhbWV0ZXJcIiwgXCJyZWZsZWN0aW9ucHJvcGVydHlcIiwgXCJyZWZsZWN0aW9ucmVmZXJlbmNlXCIsIFwicmVmbGVjdGlvbnR5cGVcIiwgXCJyZWZsZWN0aW9udW5pb250eXBlXCIsXG4gICAgXCJyZWZsZWN0aW9uemVuZGV4dGVuc2lvblwiLCBcInJlZmxlY3RvclwiLCBcInJlZ2V4aXRlcmF0b3JcIiwgXCJyZXF1ZXN0cGFyc2Vib2R5ZXhjZXB0aW9uXCIsIFwicmV0dXJudHlwZXdpbGxjaGFuZ2VcIixcbiAgICBcInJvdW5kaW5nbW9kZVwiLCBcInJ1bnRpbWVleGNlcHRpb25cIiwgXCJzZWVrYWJsZWl0ZXJhdG9yXCIsIFwic2Vuc2l0aXZlcGFyYW1ldGVyXCIsIFwic2Vuc2l0aXZlcGFyYW1ldGVydmFsdWVcIiwgXCJzZXJpYWxpemFibGVcIixcbiAgICBcInNlc3Npb25oYW5kbGVyXCIsIFwic2Vzc2lvbmhhbmRsZXJpbnRlcmZhY2VcIiwgXCJzZXNzaW9uaWRpbnRlcmZhY2VcIiwgXCJzZXNzaW9udXBkYXRldGltZXN0YW1waGFuZGxlcmludGVyZmFjZVwiLCBcInNobW9wXCIsXG4gICAgXCJzb2NrZXRcIiwgXCJzb2RpdW1leGNlcHRpb25cIiwgXCJzcGxkb3VibHlsaW5rZWRsaXN0XCIsIFwic3BsZmlsZWluZm9cIixcbiAgICBcInNwbGZpbGVvYmplY3RcIiwgXCJzcGxmaXhlZGFycmF5XCIsIFwic3BsaGVhcFwiLCBcInNwbG1heGhlYXBcIiwgXCJzcGxtaW5oZWFwXCIsIFwic3Bsb2JqZWN0c3RvcmFnZVwiLCBcInNwbG9ic2VydmVyXCIsXG4gICAgXCJzcGxwcmlvcml0eXF1ZXVlXCIsIFwic3BscXVldWVcIiwgXCJzcGxzdGFja1wiLCBcInNwbHN1YmplY3RcIiwgXCJzcGx0ZW1wZmlsZW9iamVjdFwiLCBcInN0ZGNsYXNzXCIsIFwic3RyZWFtYnVja2V0XCIsIFwic3RyaW5nYWJsZVwiLFxuICAgIFwic3lzdm1lc3NhZ2VxdWV1ZVwiLCBcInN5c3ZzZW1hcGhvcmVcIiwgXCJzeXN2c2hhcmVkbWVtb3J5XCIsIFwidGhyb3dhYmxlXCIsIFwidHJhdmVyc2FibGVcIiwgXCJ0eXBlZXJyb3JcIiwgXCJ1bmRlcmZsb3dleGNlcHRpb25cIixcbiAgICBcInVuZXhwZWN0ZWR2YWx1ZWV4Y2VwdGlvblwiLCBcInVuaGFuZGxlZG1hdGNoZXJyb3JcIiwgXCJ1bml0ZW51bVwiLCBcInZhbHVlZXJyb3JcIiwgXCJ3ZWFrbWFwXCIsIFwid2Vha3JlZmVyZW5jZVwiXG4gIF0pLFxuICBydWJ5OiBuZXcgU2V0KFtcbiAgICBcIkFyZ3VtZW50RXJyb3JcIiwgXCJBcnJheVwiLCBcIkJhc2ljT2JqZWN0XCIsIFwiQmluZGluZ1wiLCBcIkNsYXNzXCIsIFwiQ2xvc2VkUXVldWVFcnJvclwiLCBcIkNvbXBhcmFibGVcIiwgXCJDb21wbGV4XCIsIFwiRGF0YVwiLCBcIkRpclwiLFxuICAgIFwiRW5jb2RpbmdcIiwgXCJFbmNvZGluZ0Vycm9yXCIsIFwiRW51bWVyYWJsZVwiLCBcIkVudW1lcmF0b3JcIiwgXCJFT0ZFcnJvclwiLCBcIkVycm5vXCIsIFwiRXhjZXB0aW9uXCIsIFwiRmFsc2VDbGFzc1wiLCBcIkZpYmVyXCIsXG4gICAgXCJGaWJlckVycm9yXCIsIFwiRmlsZVwiLCBcIkZpbGVUZXN0XCIsIFwiRmxvYXRcIiwgXCJGcm96ZW5FcnJvclwiLCBcIkdDXCIsIFwiSGFzaFwiLCBcIklPXCIsIFwiSU9FcnJvclwiLCBcIkluZGV4RXJyb3JcIiwgXCJJbnRlZ2VyXCIsXG4gICAgXCJJbnRlcnJ1cHRcIiwgXCJLZXJuZWxcIiwgXCJLZXlFcnJvclwiLCBcIkxvYWRFcnJvclwiLCBcIkxvY2FsSnVtcEVycm9yXCIsIFwiTWFyc2hhbFwiLCBcIk1hdGNoRGF0YVwiLCBcIk1hdGhcIiwgXCJNZXRob2RcIiwgXCJNb2R1bGVcIixcbiAgICBcIk11dGV4XCIsIFwiTmFtZUVycm9yXCIsIFwiTmlsQ2xhc3NcIiwgXCJOb01lbW9yeUVycm9yXCIsIFwiTm9NZXRob2RFcnJvclwiLCBcIk5vdEltcGxlbWVudGVkRXJyb3JcIiwgXCJOdW1lcmljXCIsIFwiT2JqZWN0XCIsXG4gICAgXCJPYmplY3RTcGFjZVwiLCBcIlByb2NcIiwgXCJQcm9jZXNzXCIsIFwiUXVldWVcIiwgXCJSYWN0b3JcIiwgXCJSYW5kb21cIiwgXCJSYW5nZVwiLCBcIlJhdGlvbmFsXCIsIFwiUmVnZXhwXCIsIFwiUmVnZXhwRXJyb3JcIiwgXCJSdWJ5Vk1cIixcbiAgICBcIlJ1bnRpbWVFcnJvclwiLCBcIlNjcmlwdEVycm9yXCIsIFwiU2VjdXJpdHlFcnJvclwiLCBcIlNpZ25hbFwiLCBcIlNpZ25hbEV4Y2VwdGlvblwiLCBcIlNpemVkUXVldWVcIiwgXCJTdGFuZGFyZEVycm9yXCIsIFwiU3RvcEl0ZXJhdGlvblwiLFxuICAgIFwiU3RyaW5nXCIsIFwiU3RydWN0XCIsIFwiU3ltYm9sXCIsIFwiU3ludGF4RXJyb3JcIiwgXCJTeXN0ZW1DYWxsRXJyb3JcIiwgXCJTeXN0ZW1FeGl0XCIsIFwiU3lzdGVtU3RhY2tFcnJvclwiLCBcIlRocmVhZFwiLCBcIlRocmVhZEVycm9yXCIsXG4gICAgXCJUaHJlYWRHcm91cFwiLCBcIlRpbWVcIiwgXCJUcmFjZVBvaW50XCIsIFwiVHJ1ZUNsYXNzXCIsIFwiVHlwZUVycm9yXCIsIFwiVW5ib3VuZE1ldGhvZFwiLCBcIlVuY2F1Z2h0VGhyb3dFcnJvclwiLCBcIldhcm5pbmdcIixcbiAgICBcIlplcm9EaXZpc2lvbkVycm9yXCJcbiAgXSksXG4gIHR5cGVzY3JpcHQ6IG5ldyBTZXQoW1wiQXJyYXlcIiwgXCJCb29sZWFuXCIsIFwiTWFwXCIsIFwiTWF0aFwiLCBcIk51bWJlclwiLCBcIk9iamVjdFwiLCBcIlJlYWRvbmx5QXJyYXlcIiwgXCJSZWFkb25seU1hcFwiLCBcIlJlZmxlY3RcIiwgXCJTdHJpbmdcIl0pXG59KVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhbiBpZGVudGlmaWVyIGFnYWluc3QgdGhlIHRhcmdldCBiYWNrZW5kJ3MgZGVsaWJlcmF0ZWx5IG5hcnJvdyBsZXhpY2FsIGNvbnRyYWN0LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9IGxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHt1bmtub3dufSBuYW1lIC0gQ2FuZGlkYXRlIHNlbWFudGljIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gcm9sZSAtIElkZW50aWZpZXIgcm9sZSBmb3IgZGlhZ25vc3RpY3MuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNvdXJjZUxvY2F0aW9uIHwgdW5kZWZpbmVkfSBsb2NhdGlvbiAtIE9yaWdpbmF0aW5nIGxvY2F0aW9uLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhcmdldElkZW50aWZpZXIobGFuZ3VhZ2UsIG5hbWUsIHJvbGUsIGxvY2F0aW9uKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPSBcInN0cmluZ1wiKSB1bnN1cHBvcnRlZENhcGFiaWxpdHkobGFuZ3VhZ2UsIGAke3JvbGV9IGlkZW50aWZpZXJgLCBsb2NhdGlvbilcblxuICBjb25zdCByZXNlcnZlZE5hbWUgPSBsYW5ndWFnZSA9PSBcInBocFwiID8gbmFtZS50b0xvd2VyQ2FzZSgpIDogbmFtZVxuICBjb25zdCBzeW50YXhMYW5ndWFnZSA9IGxhbmd1YWdlID09IFwiaW9zXCIgPyBcInN3aWZ0XCIgOiBsYW5ndWFnZVxuXG4gIGlmICghaWRlbnRpZmllclBhdHRlcm5zW3N5bnRheExhbmd1YWdlXS50ZXN0KG5hbWUpIHx8IHJlc2VydmVkV29yZHNbc3ludGF4TGFuZ3VhZ2VdLmhhcyhyZXNlcnZlZE5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJweXRob25cIiAmJiBuYW1lLm5vcm1hbGl6ZShcIk5GS0NcIikgIT0gbmFtZSB8fFxuICAgIGxhbmd1YWdlID09IFwiY1wiICYmICFpc0NJZGVudGlmaWVyKG5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJydXN0XCIgJiYgIWlzUnVzdElkZW50aWZpZXIobmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcImNwcFwiICYmICFpc0NwcElkZW50aWZpZXIobmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcImRhcnRcIiAmJiAhaXNEYXJ0SWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwic3dpZnRcIiAmJiAoIWlzU3dpZnRJZGVudGlmaWVyKG5hbWUpIHx8IG5hbWUubm9ybWFsaXplKFwiTkZDXCIpICE9IG5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJrb3RsaW5cIiAmJiAoIWlzS290bGluSWRlbnRpZmllcihuYW1lKSB8fCBuYW1lLm5vcm1hbGl6ZShcIk5GQ1wiKSAhPSBuYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYCR7cm9sZX0gaWRlbnRpZmllciAnJHtuYW1lfSdgLCBsb2NhdGlvbilcbiAgfVxufVxuXG4vKipcbiAqIFByb3RlY3RzIHRoZSBleGFjdCBDIGhlYWRlciBlbnZpcm9ubWVudCBhbmQgaW1wbGVtZW50YXRpb24tcmVzZXJ2ZWQgbmFtZXNwYWNlIGluIGVpdGhlciBkaXJlY3Rpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlciBpZGVudGlmaWVyLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNwZWxsaW5nIGlzIHNhZmUgaW4gdGhlIGNhbm9uaWNhbCB0cmFuc2xhdGlvbiB1bml0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDSWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMuYy50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLmMuaGFzKG5hbWUpICYmXG4gICAgIS9eKD86c2VtYW50aWZvbGRffFNFTUFOVElGT0xEX3xTZW1hbnRpZm9sZHxhdG9taWNffElOVFswLTlfQS1aXXxVSU5UWzAtOV9BLVpdfElOVE1BWF98VUlOVE1BWF98U0laRV98UFRSRElGRl98U0lHX0FUT01JQ198V0NIQVJffFdJTlRffENIQVJffFNDSEFSX3xVQ0hBUl98U0hSVF98VVNIUlRffExPTkdffFVMT05HX3xMTE9OR198VUxMT05HXykvdS50ZXN0KG5hbWUpICYmXG4gICAgIS9eKD86dT9pbnQoPzo4fDE2fDMyfDY0fG1heHxwdHJ8X2xlYXN0WzAtOV0rfF9mYXN0WzAtOV0rKV90KSQvdS50ZXN0KG5hbWUpXG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgYmluZGluZyBpZGVudGlmaWVyIGFnYWluc3QgdGFyZ2V0IHJlc3RyaWN0aW9ucyBiZXlvbmQgZ2VuZXJhbCBpZGVudGlmaWVyIHN5bnRheC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gbmFtZSAtIENhbmRpZGF0ZSBzZW1hbnRpYyBpZGVudGlmaWVyLlxuICogQHBhcmFtIHtzdHJpbmd9IHJvbGUgLSBCaW5kaW5nIHJvbGUgZm9yIGRpYWdub3N0aWNzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gbG9jYXRpb24gLSBPcmlnaW5hdGluZyBsb2NhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRCaW5kaW5nSWRlbnRpZmllcihsYW5ndWFnZSwgbmFtZSwgcm9sZSwgbG9jYXRpb24pIHtcbiAgdmFsaWRhdGVUYXJnZXRJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCByb2xlLCBsb2NhdGlvbilcblxuICBjb25zdCBpbnZhbGlkVHlwZVNjcmlwdEJpbmRpbmcgPSBsYW5ndWFnZSA9PSBcInR5cGVzY3JpcHRcIiAmJiAobmFtZSA9PSBcImFyZ3VtZW50c1wiIHx8IG5hbWUgPT0gXCJldmFsXCIpXG4gIGNvbnN0IGludmFsaWRQaHBWYXJpYWJsZSA9IGxhbmd1YWdlID09IFwicGhwXCIgJiYgdHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIiAmJlxuICAgICgocm9sZSA9PSBcInBhcmFtZXRlclwiICYmIHBocEludmFsaWRQYXJhbWV0ZXJCaW5kaW5ncy5oYXMobmFtZSkpIHx8XG4gICAgICAoKHJvbGUgPT0gXCJsb2NhbFwiIHx8IHJvbGUgPT0gXCJhc3NpZ25tZW50IHRhcmdldFwiIHx8IHJvbGUgPT0gXCJjYXRjaCBiaW5kaW5nXCIpICYmIHBocEludmFsaWRBc3NpZ25lZEJpbmRpbmdzLmhhcyhuYW1lKSkpXG4gIGNvbnN0IGludmFsaWRSdWJ5QmluZGluZyA9IGxhbmd1YWdlID09IFwicnVieVwiICYmIHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIgJiYgL15fWzEtOV0kL3UudGVzdChuYW1lKVxuXG4gIGlmIChpbnZhbGlkVHlwZVNjcmlwdEJpbmRpbmcgfHwgaW52YWxpZFBocFZhcmlhYmxlIHx8IGludmFsaWRSdWJ5QmluZGluZykge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYCR7cm9sZX0gaWRlbnRpZmllciAnJHtuYW1lfSdgLCBsb2NhdGlvbilcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBhIG5vbWluYWwgcmVjb3JkL3R5cGUgZGVjbGFyYXRpb24gbmFtZSBmb3IgdGhlIG9yaWdpbmFsLWZpdmUgdGFyZ2V0cy5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIEJhY2tlbmQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3Vua25vd259IG5hbWUgLSBDYW5kaWRhdGUgdHlwZSBuYW1lLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gbG9jYXRpb24gLSBEZWNsYXJhdGlvbiBsb2NhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRUeXBlSWRlbnRpZmllcihsYW5ndWFnZSwgbmFtZSwgbG9jYXRpb24pIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9IFwic3RyaW5nXCIgfHwgIS9eW0EtWl1bQS1aYS16MC05X10qJC91LnRlc3QobmFtZSkpIHtcbiAgICB1bnN1cHBvcnRlZENhcGFiaWxpdHkobGFuZ3VhZ2UsIGByZWNvcmQgdHlwZSBpZGVudGlmaWVyICcke1N0cmluZyhuYW1lKX0nYCwgbG9jYXRpb24pXG4gIH1cbiAgY29uc3QgcmVzZXJ2ZWROYW1lID0gbGFuZ3VhZ2UgPT0gXCJwaHBcIiA/IG5hbWUudG9Mb3dlckNhc2UoKSA6IG5hbWVcbiAgY29uc3Qgc3ludGF4TGFuZ3VhZ2UgPSBsYW5ndWFnZSA9PSBcImlvc1wiID8gXCJzd2lmdFwiIDogbGFuZ3VhZ2VcblxuICBpZiAocmVzZXJ2ZWRXb3Jkc1tzeW50YXhMYW5ndWFnZV0uaGFzKHJlc2VydmVkTmFtZSkgfHwgcmVzZXJ2ZWRUeXBlTmFtZXNbbGFuZ3VhZ2VdPy5oYXMocmVzZXJ2ZWROYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYHJlY29yZCB0eXBlIGlkZW50aWZpZXIgJyR7bmFtZX0nYCwgbG9jYXRpb24pXG4gIH1cbn1cblxuLyoqXG4gKiBQcm90ZWN0cyBDKysga2V5d29yZHMsIHRoZSBhY3R1YWwgaW5jbHVkZWQgQyBsaWJyYXJ5IG5hbWVzL21hY3JvcyBhbmQgdGhlIHNjYWZmb2xkIG5hbWVzcGFjZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyIHNjYWxhciBiaW5kaW5nIG9yIGZ1bmN0aW9uIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBhIGNhbm9uaWNhbCBDKysyMCB0cmFuc2xhdGlvbiB1bml0IGNhbiByZXByZXNlbnQgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NwcElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaXNDSWRlbnRpZmllcihuYW1lKSAmJiAhbmFtZS5pbmNsdWRlcyhcIl9fXCIpICYmICFyZXNlcnZlZFdvcmRzLmNwcC5oYXMobmFtZSlcbn1cblxuLyoqXG4gKiBQcm90ZWN0cyB0aGUgZWRpdGlvbi0yMDIxIHNjYWxhciwgZW50cnkgYW5kIGV4YWN0IGhlbHBlciBlbnZpcm9ubWVudCBpbiBib3RoIGRpcmVjdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlci1vd25lZCBmdW5jdGlvbiBvciBiaW5kaW5nIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvcmRpbmFyeSBSdXN0IHN5bnRheCBjYW4gcmVwcmVzZW50IHRoZSBuYW1lIHNhZmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUnVzdElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLnJ1c3QudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5ydXN0LmhhcyhuYW1lKSAmJiAhbmFtZS5zdGFydHNXaXRoKFwic2VtYW50aWZvbGRfXCIpXG59XG5cbi8qKlxuICogUHJvdGVjdHMgU3dpZnQga2V5d29yZHMsIHNjYWxhciBuYW1lcywgZW50cnkgcGx1bWJpbmcsIGFuZCB0YXJnZXQtb25seSBoZWxwZXIgbmFtZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlci1vd25lZCBmdW5jdGlvbiBvciBiaW5kaW5nIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvcmRpbmFyeSB1bmVzY2FwZWQgU3dpZnQgc3ludGF4IGNhbiBwcmVzZXJ2ZSB0aGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3dpZnRJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5zd2lmdC50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLnN3aWZ0LmhhcyhuYW1lKSAmJiAhbmFtZS5zdGFydHNXaXRoKFwic2VtYW50aWZvbGRfXCIpXG59XG5cbi8qKlxuICogUHJvdGVjdHMgS290bGluIGtleXdvcmRzLCBKVk0gc2NhbGFyL3NjYWZmb2xkIG5hbWVzLCBhbmQgdGFyZ2V0LW9ubHkgaGVscGVyIG5hbWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXItb3duZWQgZnVuY3Rpb24gb3IgYmluZGluZyBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgb3JkaW5hcnkgdW5lc2NhcGVkIEtvdGxpbiBzeW50YXggY2FuIHByZXNlcnZlIHRoZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNLb3RsaW5JZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5rb3RsaW4udGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5rb3RsaW4uaGFzKG5hbWUpICYmICFuYW1lLnN0YXJ0c1dpdGgoXCJzZW1hbnRpZm9sZF9cIikgJiZcbiAgICAhbmFtZS5zdGFydHNXaXRoKFwiU0VNQU5USUZPTERfXCIpXG59XG5cbi8qKlxuICogUHJvdGVjdHMgRGFydCBrZXl3b3JkcywgVk0gc2NhbGFyL3NjYWZmb2xkIG5hbWVzLCBhbmQgY29tcGlsZXItb3duZWQgaGVscGVycy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyLW93bmVkIGZ1bmN0aW9uIG9yIGJpbmRpbmcgbmFtZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIG9yZGluYXJ5IERhcnQgc3ludGF4IGNhbiBwcmVzZXJ2ZSB0aGUgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGFydElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLmRhcnQudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5kYXJ0LmhhcyhuYW1lKSAmJlxuICAgICFuYW1lLnN0YXJ0c1dpdGgoXCJfc2VtYW50aWZvbGRcIikgJiYgbmFtZS5ub3JtYWxpemUoXCJORkNcIikgPT0gbmFtZVxufVxuIl19
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpZmllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmFja2VuZHMvaWRlbnRpZmllcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBRXRELHlHQUF5RztBQUN6RyxNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLE9BQU8sRUFBRSxtQ0FBbUM7SUFDNUMsSUFBSSxFQUFFLG1DQUFtQztJQUN6QyxNQUFNLEVBQUUsbUNBQW1DO0lBQzNDLEtBQUssRUFBRSwrQ0FBK0M7SUFDdEQsSUFBSSxFQUFFLDJCQUEyQjtJQUNqQyxHQUFHLEVBQUUsMkJBQTJCO0lBQ2hDLEdBQUcsRUFBRSwwQkFBMEI7SUFDL0IsQ0FBQyxFQUFFLDBCQUEwQjtJQUM3QixNQUFNLEVBQUUsMkJBQTJCO0lBQ25DLEVBQUUsRUFBRSwyQkFBMkI7SUFDL0IsSUFBSSxFQUFFLDZCQUE2QjtJQUNuQyxVQUFVLEVBQUUsNkJBQTZCO0lBQ3pDLEdBQUcsRUFBRSwyQkFBMkI7SUFDaEMsTUFBTSxFQUFFLCtDQUErQztJQUN2RCxJQUFJLEVBQUUsd0JBQXdCO0lBQzlCLFVBQVUsRUFBRSw2QkFBNkI7SUFDekMsSUFBSSxFQUFFLHFEQUFxRDtDQUM1RCxDQUFBO0FBRUQsOEdBQThHO0FBQzlHLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLE9BQU8sRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNmLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNO1FBQzlHLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxL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LFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUztRQUNuRyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVTtRQUMxRyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUTtRQUNwRyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRO1FBQzFHLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNO1FBQzVHLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDdEcsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUztRQUN6RyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVE7S0FDN0QsQ0FBQztJQUNGLE1BQU0sRUFBRSxJQUFJLEdBQUcsQ0FBQztRQUNkLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUk7UUFDdEcsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPO1FBQ3RELElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQ3BHLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUTtRQUN6SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU07UUFDeEcsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTTtRQUM1RyxNQUFNLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUk7UUFDMUcsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDakgsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRO1FBQ2hILFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTztRQUMvRyxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTTtRQUM1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPO0tBQ2xDLENBQUM7SUFDRixFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDVixHQUFHLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU07UUFDdEcsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUs7UUFDckcsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLO0tBQzFCLENBQUM7SUFDRixJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDWixHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVU7UUFDNUcsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLO1FBQzVHLE1BQU0sRUFBRSxJQUFJ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QUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUE7QUFDbEgsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBSTtJQUNyQyxPQUFPLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO1FBQ2hILENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUNwQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFJO0lBQ25DLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUN4RSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge3Vuc3VwcG9ydGVkQ2FwYWJpbGl0eX0gZnJvbSBcIi4uL2RpYWdub3N0aWMuanNcIlxuXG4vKiogQHR5cGUge1JlY29yZDxFeGNsdWRlPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZSwgXCJpb3NcIiB8IFwiZmx1dHRlclwiPiwgUmVnRXhwPn0gKi9cbmNvbnN0IGlkZW50aWZpZXJQYXR0ZXJucyA9IHtcbiAgYW5kcm9pZDogL14oPzpffFxccHtMfSkoPzpffFxccHtMfXxcXHB7TmR9KSokL3UsXG4gIGRhcnQ6IC9eKD86X3xcXHB7TH0pKD86X3xcXHB7TH18XFxwe05kfSkqJC91LFxuICBrb3RsaW46IC9eKD86X3xcXHB7TH0pKD86X3xcXHB7TH18XFxwe05kfSkqJC91LFxuICBzd2lmdDogL14oPzpffFxccHtYSURfU3RhcnR9KSg/Ol98XFxwe1hJRF9Db250aW51ZX0pKiQvdSxcbiAgcnVzdDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICB6aWc6IC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgY3BwOiAvXltBLVphLXpdW0EtWmEtejAtOV9dKiQvdSxcbiAgYzogL15bQS1aYS16XVtBLVphLXowLTlfXSokL3UsXG4gIGNzaGFycDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBnbzogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBqYXZhOiAvXltBLVphLXpfJF1bQS1aYS16MC05XyRdKiQvdSxcbiAgamF2YXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHBocDogL15bQS1aYS16X11bQS1aYS16MC05X10qJC91LFxuICBweXRob246IC9eKD86X3xcXHB7WElEX1N0YXJ0fSkoPzpffFxccHtYSURfQ29udGludWV9KSokL3UsXG4gIHJ1Ynk6IC9eW2Etel9dW0EtWmEtejAtOV9dKiQvdSxcbiAgdHlwZXNjcmlwdDogL15bQS1aYS16XyRdW0EtWmEtejAtOV8kXSokL3UsXG4gIHdhc206IC9eKD86WyRfXXxcXHB7WElEX1N0YXJ0fSkoPzpbJF9dfFxccHtYSURfQ29udGludWV9KSokL3Vcbn1cblxuLyoqIEB0eXBlIHtSZWNvcmQ8RXhjbHVkZTxpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2UsIFwiaW9zXCIgfCBcImZsdXR0ZXJcIj4sIFNldDxzdHJpbmc+Pn0gKi9cbmNvbnN0IHJlc2VydmVkV29yZHMgPSB7XG4gIGFuZHJvaWQ6IG5ldyBTZXQoW1xuICAgIFwiYXNcIiwgXCJicmVha1wiLCBcImNsYXNzXCIsIFwiY29udGludWVcIiwgXCJkb1wiLCBcImVsc2VcIiwgXCJmYWxzZVwiLCBcImZvclwiLCBcImZ1blwiLCBcImlmXCIsIFwiaW5cIiwgXCJpbnRlcmZhY2VcIiwgXCJpc1wiLCBcIm51bGxcIixcbiAgICBcIm9iamVjdFwiLCBcInBhY2thZ2VcIiwgXCJyZXR1cm5cIiwgXCJzdXBlclwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlYWxpYXNcIiwgXCJ0eXBlb2ZcIiwgXCJ2YWxcIiwgXCJ2YXJcIiwgXCJ3aGVuXCIsXG4gICAgXCJ3aGlsZVwiLCBcIl9cIiwgXCJtYWluXCIsIFwicHJpbnRsblwiLCBcIkxvbmdcIiwgXCJCb29sZWFuXCIsIFwiU3RyaW5nXCIsIFwiTWF0aFwiLCBcIkFyaXRobWV0aWNFeGNlcHRpb25cIlxuICBdKSxcbiAgZGFydDogbmV3IFNldChbXG4gICAgXCJGdW5jdGlvblwiLCBcIk5ldmVyXCIsIFwiT2JqZWN0XCIsIFwiUmFuZ2VFcnJvclwiLCBcIlN0cmluZ1wiLCBcImFic3RyYWN0XCIsIFwiYXNcIiwgXCJhc3NlcnRcIiwgXCJhc3luY1wiLCBcImF3YWl0XCIsIFwiYmFzZVwiLFxuICAgIFwiYm9vbFwiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsIFwiY292YXJpYW50XCIsIFwiZGVmYXVsdFwiLCBcImRlZmVycmVkXCIsIFwiZG9cIixcbiAgICBcImRvdWJsZVwiLCBcImR5bmFtaWNcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cG9ydFwiLCBcImV4dGVuZHNcIiwgXCJleHRlbnNpb25cIiwgXCJleHRlcm5hbFwiLCBcImZhY3RvcnlcIiwgXCJmYWxzZVwiLCBcImZpbmFsXCIsXG4gICAgXCJmaW5hbGx5XCIsIFwiZm9yXCIsIFwiZ2V0XCIsIFwiaGlkZVwiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluXCIsIFwiaW50XCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJsYXRlXCIsIFwibGlicmFyeVwiLFxuICAgIFwibWFpblwiLCBcIm1peGluXCIsIFwibmF0aXZlXCIsIFwibmV3XCIsIFwibnVsbFwiLCBcIm51bVwiLCBcIm9mXCIsIFwib25cIiwgXCJvcGVyYXRvclwiLCBcInBhcnRcIiwgXCJwcmludFwiLCBcInJlcXVpcmVkXCIsIFwicmV0aHJvd1wiLFxuICAgIFwicmV0dXJuXCIsIFwic2VhbGVkXCIsIFwic2V0XCIsIFwic2hvd1wiLCBcInN0YXRpY1wiLCBcInN1cGVyXCIsIFwic3dpdGNoXCIsIFwic3luY1wiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlZGVmXCIsXG4gICAgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwid2hlblwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCIsIFwiQmlnSW50XCIsIFwiX1wiXG4gIF0pLFxuICBrb3RsaW46IG5ldyBTZXQoW1xuICAgIFwiYXNcIiwgXCJicmVha1wiLCBcImNsYXNzXCIsIFwiY29udGludWVcIiwgXCJkb1wiLCBcImVsc2VcIiwgXCJmYWxzZVwiLCBcImZvclwiLCBcImZ1blwiLCBcImlmXCIsIFwiaW5cIiwgXCJpbnRlcmZhY2VcIiwgXCJpc1wiLCBcIm51bGxcIixcbiAgICBcIm9iamVjdFwiLCBcInBhY2thZ2VcIiwgXCJyZXR1cm5cIiwgXCJzdXBlclwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlYWxpYXNcIiwgXCJ0eXBlb2ZcIiwgXCJ2YWxcIiwgXCJ2YXJcIiwgXCJ3aGVuXCIsXG4gICAgXCJ3aGlsZVwiLCBcIl9cIiwgXCJtYWluXCIsIFwicHJpbnRsblwiLCBcIkxvbmdcIiwgXCJCb29sZWFuXCIsIFwiU3RyaW5nXCIsIFwiTWF0aFwiLCBcIkFyaXRobWV0aWNFeGNlcHRpb25cIlxuICBdKSxcbiAgc3dpZnQ6IG5ldyBTZXQoW1xuICAgIFwiQW55XCIsIFwiU2VsZlwiLCBcIlR5cGVcIiwgXCJQcm90b2NvbFwiLCBcImFjdG9yXCIsIFwiYW55XCIsIFwiYXNcIiwgXCJhc3NvY2lhdGVkdHlwZVwiLCBcImFzc29jaWF0aXZpdHlcIiwgXCJhc3luY1wiLCBcImF3YWl0XCIsIFwiYm9ycm93aW5nXCIsXG4gICAgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjYXRjaFwiLCBcImNsYXNzXCIsIFwiY29uc3VtZVwiLCBcImNvbnN1bWluZ1wiLCBcImNvbnRpbnVlXCIsIFwiY29udmVuaWVuY2VcIiwgXCJjb3B5XCIsIFwiZGVmYXVsdFwiLCBcImRlZmVyXCIsIFwiZGVpbml0XCIsXG4gICAgXCJkaWRTZXRcIiwgXCJkaXN0cmlidXRlZFwiLCBcImRvXCIsIFwiZHluYW1pY1wiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXh0ZW5zaW9uXCIsIFwiZmFsbHRocm91Z2hcIiwgXCJmYWxzZVwiLCBcImZpbGVwcml2YXRlXCIsIFwiZmluYWxcIiwgXCJmb3JcIixcbiAgICBcImZ1bmNcIiwgXCJnZXRcIiwgXCJndWFyZFwiLCBcImlmXCIsIFwiaW1wb3J0XCIsIFwiaW5cIiwgXCJpbmRpcmVjdFwiLCBcImluZml4XCIsIFwiaW5pdFwiLCBcImlub3V0XCIsIFwiaW50ZXJuYWxcIiwgXCJpc1wiLCBcImlzb2xhdGVkXCIsIFwibGF6eVwiLFxuICAgIFwibGV0XCIsIFwibWFjcm9cIiwgXCJtdXRhdGluZ1wiLCBcIm5pbFwiLCBcIm5vbmlzb2xhdGVkXCIsIFwibm9ubXV0YXRpbmdcIiwgXCJvcGVuXCIsIFwib3BlcmF0b3JcIiwgXCJvcHRpb25hbFwiLCBcIm92ZXJyaWRlXCIsIFwicGFja2FnZVwiLFxuICAgIFwicG9zdGZpeFwiLCBcInByZWNlZGVuY2VcIiwgXCJwcmVjZWRlbmNlZ3JvdXBcIiwgXCJwcmVmaXhcIiwgXCJwcml2YXRlXCIsIFwicHJvdG9jb2xcIiwgXCJwdWJsaWNcIiwgXCJyZXBlYXRcIiwgXCJyZXF1aXJlZFwiLCBcInJldGhyb3dzXCIsIFwicmV0dXJuXCIsXG4gICAgXCJzYWZlXCIsIFwic2VsZlwiLCBcInNlbmRpbmdcIiwgXCJzZXRcIiwgXCJzb21lXCIsIFwic3RhdGljXCIsIFwic3RydWN0XCIsIFwic3Vic2NyaXB0XCIsIFwic3VwZXJcIiwgXCJzd2l0Y2hcIiwgXCJ0aHJvd3NcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsXG4gICAgXCJ0eXBlYWxpYXNcIiwgXCJ1bm93bmVkXCIsIFwidW5zYWZlXCIsIFwidmFyXCIsIFwid2Vha1wiLCBcIndoZXJlXCIsIFwid2hpbGVcIiwgXCJ3aWxsU2V0XCIsIFwieWllbGRcIiwgXCJfXCIsIFwiQm9vbFwiLCBcIkludFwiLCBcIkludDY0XCIsIFwiU3RyaW5nXCIsXG4gICAgXCJTd2lmdFwiLCBcIm1haW5cIiwgXCJwcmludFwiXG4gIF0pLFxuICBydXN0OiBuZXcgU2V0KFtcbiAgICBcImFzXCIsIFwiYXN5bmNcIiwgXCJhd2FpdFwiLCBcImJyZWFrXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImNyYXRlXCIsIFwiZHluXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHRlcm5cIiwgXCJmYWxzZVwiLCBcImZuXCIsIFwiZm9yXCIsIFwiaWZcIiwgXCJpbXBsXCIsIFwiaW5cIixcbiAgICBcImxldFwiLCBcImxvb3BcIiwgXCJtYXRjaFwiLCBcIm1vZFwiLCBcIm1vdmVcIiwgXCJtdXRcIiwgXCJwdWJcIiwgXCJyZWZcIiwgXCJyZXR1cm5cIiwgXCJzZWxmXCIsIFwiU2VsZlwiLCBcInN0YXRpY1wiLCBcInN0cnVjdFwiLCBcInN1cGVyXCIsIFwidHJhaXRcIiwgXCJ0cnVlXCIsIFwidHlwZVwiLFxuICAgIFwidW5zYWZlXCIsIFwidXNlXCIsIFwid2hlcmVcIiwgXCJ3aGlsZVwiLCBcImFic3RyYWN0XCIsIFwiYmVjb21lXCIsIFwiYm94XCIsIFwiZG9cIiwgXCJmaW5hbFwiLCBcIm1hY3JvXCIsIFwib3ZlcnJpZGVcIiwgXCJwcml2XCIsIFwidHlwZW9mXCIsIFwidW5zaXplZFwiLCBcInZpcnR1YWxcIixcbiAgICBcInlpZWxkXCIsIFwidHJ5XCIsIFwidW5pb25cIiwgXCJfXCIsIFwibWFpblwiLCBcIlN0cmluZ1wiLCBcInN0ZFwiLCBcImk2NFwiLCBcImJvb2xcIlxuICBdKSxcbiAgemlnOiBuZXcgU2V0KFtcbiAgICBcImFkZHJzcGFjZVwiLCBcImFsaWduXCIsIFwiYWxsb3d6ZXJvXCIsIFwiYW5kXCIsIFwiYW55ZXJyb3JcIiwgXCJhbnlmcmFtZVwiLCBcImFueW9wYXF1ZVwiLCBcImFueXR5cGVcIiwgXCJhc21cIiwgXCJhc3luY1wiLCBcImF3YWl0XCIsIFwiYnJlYWtcIiwgXCJjYWxsY29udlwiLFxuICAgIFwiY2F0Y2hcIiwgXCJjb21wdGltZVwiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJkZWZlclwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXJyZGVmZXJcIiwgXCJlcnJvclwiLCBcImV4cG9ydFwiLCBcImV4dGVyblwiLCBcImZhbHNlXCIsXG4gICAgXCJmblwiLCBcImZvclwiLCBcImlmXCIsIFwiaW5saW5lXCIsIFwibGlua3NlY3Rpb25cIiwgXCJub2FsaWFzXCIsIFwibm9pbmxpbmVcIiwgXCJub3N1c3BlbmRcIiwgXCJudWxsXCIsIFwib3BhcXVlXCIsIFwib3JcIiwgXCJvcmVsc2VcIixcbiAgICBcInBhY2tlZFwiLCBcInB1YlwiLCBcInJlc3VtZVwiLCBcInJldHVyblwiLCBcInN0cnVjdFwiLCBcInN1c3BlbmRcIiwgXCJzd2l0Y2hcIiwgXCJ0ZXN0XCIsIFwidGhyZWFkbG9jYWxcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidW5pb25cIixcbiAgICBcInVucmVhY2hhYmxlXCIsIFwidXNpbmduYW1lc3BhY2VcIiwgXCJ2YXJcIiwgXCJ2b2xhdGlsZVwiLCBcIndoaWxlXCIsIFwiX1wiLCBcIm1haW5cIiwgXCJzdGRcIiwgXCJib29sXCIsIFwiY19jaGFyXCIsIFwiY19pbnRcIiwgXCJjX2xvbmdcIixcbiAgICBcImNfbG9uZ2RvdWJsZVwiLCBcImNfbG9uZ2xvbmdcIiwgXCJjX3Nob3J0XCIsIFwiY191aW50XCIsIFwiY191bG9uZ1wiLCBcImNfdWxvbmdsb25nXCIsIFwiY191c2hvcnRcIiwgXCJjb21wdGltZV9mbG9hdFwiLFxuICAgIFwiY29tcHRpbWVfaW50XCIsIFwiZjE2XCIsIFwiZjMyXCIsIFwiZjY0XCIsIFwiZjgwXCIsIFwiZjEyOFwiLCBcImlzaXplXCIsIFwibm9yZXR1cm5cIiwgXCJ0eXBlXCIsIFwidW5kZWZpbmVkXCIsIFwidXNpemVcIiwgXCJ2b2lkXCIsXG4gICAgXCJzZW1hbnRpZm9sZF9hcmVuYVwiLCBcInNlbWFudGlmb2xkX2ZhaWxcIiwgXCJzZW1hbnRpZm9sZF9pbnRlZ2VyX2FkZFwiLCBcInNlbWFudGlmb2xkX2ludGVnZXJfc3VidHJhY3RcIixcbiAgICBcInNlbWFudGlmb2xkX2ludGVnZXJfbXVsdGlwbHlcIiwgXCJzZW1hbnRpZm9sZF9pbnRlZ2VyX25lZ2F0ZVwiLCBcInNlbWFudGlmb2xkX3N0cmluZ19jb25jYXRcIiwgXCJzZW1hbnRpZm9sZF9zdHJpbmdfZXF1YWxcIixcbiAgICBcInNlbWFudGlmb2xkX3N0cmluZ19ub3RfZXF1YWxcIiwgXCJzZW1hbnRpZm9sZF9wcmludF9pbnRlZ2VyXCIsIFwic2VtYW50aWZvbGRfcHJpbnRfYm9vbGVhblwiLCBcInNlbWFudGlmb2xkX3ByaW50X3N0cmluZ1wiXG4gIF0pLFxuICBjcHA6IG5ldyBTZXQoW1xuICAgIFwiYWxpZ25hc1wiLCBcImFsaWdub2ZcIiwgXCJhbmRcIiwgXCJhbmRfZXFcIiwgXCJhc21cIiwgXCJhdXRvXCIsIFwiYml0YW5kXCIsIFwiYml0b3JcIiwgXCJib29sXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjaGFyXCIsIFwiY2hhcjhfdFwiLCBcImNoYXIxNl90XCIsIFwiY2hhcjMyX3RcIiwgXCJjbGFzc1wiLCBcImNvbXBsXCIsIFwiY29uY2VwdFwiLCBcImNvbnN0XCIsIFwiY29uc3RldmFsXCIsIFwiY29uc3RleHByXCIsIFwiY29uc3Rpbml0XCIsIFwiY29uc3RfY2FzdFwiLCBcImNvbnRpbnVlXCIsIFwiY29fYXdhaXRcIiwgXCJjb19yZXR1cm5cIiwgXCJjb195aWVsZFwiLCBcImRlY2x0eXBlXCIsIFwiZGVmYXVsdFwiLCBcImRlbGV0ZVwiLCBcImRvXCIsIFwiZG91YmxlXCIsIFwiZHluYW1pY19jYXN0XCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHBsaWNpdFwiLCBcImV4cG9ydFwiLCBcImV4dGVyblwiLCBcImZhbHNlXCIsIFwiZmxvYXRcIiwgXCJmb3JcIiwgXCJmcmllbmRcIiwgXCJnb3RvXCIsIFwiaWZcIiwgXCJpbmxpbmVcIiwgXCJpbnRcIiwgXCJsb25nXCIsIFwibXV0YWJsZVwiLCBcIm5hbWVzcGFjZVwiLCBcIm5ld1wiLCBcIm5vZXhjZXB0XCIsIFwibm90XCIsIFwibm90X2VxXCIsIFwibnVsbHB0clwiLCBcIm9wZXJhdG9yXCIsIFwib3JcIiwgXCJvcl9lcVwiLCBcInByaXZhdGVcIiwgXCJwcm90ZWN0ZWRcIiwgXCJwdWJsaWNcIiwgXCJyZWdpc3RlclwiLCBcInJlaW50ZXJwcmV0X2Nhc3RcIiwgXCJyZXF1aXJlc1wiLCBcInJldHVyblwiLCBcInNob3J0XCIsIFwic2lnbmVkXCIsIFwic2l6ZW9mXCIsIFwic3RhdGljXCIsIFwic3RhdGljX2Fzc2VydFwiLCBcInN0YXRpY19jYXN0XCIsIFwic3RydWN0XCIsIFwic3dpdGNoXCIsIFwidGVtcGxhdGVcIiwgXCJ0aGlzXCIsIFwidGhyZWFkX2xvY2FsXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZWRlZlwiLCBcInR5cGVpZFwiLCBcInR5cGVuYW1lXCIsIFwidW5pb25cIiwgXCJ1bnNpZ25lZFwiLCBcInVzaW5nXCIsIFwidmlydHVhbFwiLCBcInZvaWRcIiwgXCJ2b2xhdGlsZVwiLCBcIndjaGFyX3RcIiwgXCJ3aGlsZVwiLCBcInhvclwiLCBcInhvcl9lcVwiLCBcInN0ZFwiLCBcInN0cmluZ1wiLCBcIm51bWVyaWNfbGltaXRzXCIsXG4gICAgLy8gVGhlIHF1YWxpZmllZCBsaWJzdGRjKysgPHN0cmluZz4gaW5jbHVkZSBjaGFpbiBhbHNvIGV4cG9zZXMgdGhlc2UgZ2xvYmFsIG5hbWVzLlxuICAgIFwiV0VPRlwiLCBcIndpbnRfdFwiXG4gIF0pLFxuICBjOiBuZXcgU2V0KFtcbiAgICBcImF1dG9cIiwgXCJicmVha1wiLCBcImNhc2VcIiwgXCJjaGFyXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlZmF1bHRcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImVsc2VcIiwgXCJlbnVtXCIsIFwiZXh0ZXJuXCIsXG4gICAgXCJmbG9hdFwiLCBcImZvclwiLCBcImdvdG9cIiwgXCJpZlwiLCBcImlubGluZVwiLCBcImludFwiLCBcImxvbmdcIiwgXCJyZWdpc3RlclwiLCBcInJlc3RyaWN0XCIsIFwicmV0dXJuXCIsIFwic2hvcnRcIiwgXCJzaWduZWRcIixcbiAgICBcInNpemVvZlwiLCBcInN0YXRpY1wiLCBcInN0cnVjdFwiLCBcInN3aXRjaFwiLCBcInR5cGVkZWZcIiwgXCJ1bmlvblwiLCBcInVuc2lnbmVkXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsIFwid2hpbGVcIixcbiAgICBcImJvb2xcIiwgXCJ0cnVlXCIsIFwiZmFsc2VcIiwgXCJUUlVFXCIsIFwiRkFMU0VcIiwgXCJpbnQ2NF90XCIsIFwidWludDY0X3RcIiwgXCJzaXplX3RcIiwgXCJwdHJkaWZmX3RcIiwgXCJtYWluXCIsIFwiTlVMTFwiLCBcIklOVDY0X0NcIiwgXCJVSU5UNjRfQ1wiLFxuICAgIFwiSU5UNjRfTUlOXCIsIFwiSU5UNjRfTUFYXCIsIFwiUFRSRElGRl9NQVhcIiwgXCJDSEFSX0JJVFwiLCBcInN0ZGluXCIsIFwic3Rkb3V0XCIsIFwic3RkZXJyXCIsIFwibWFsbG9jXCIsIFwiZnJlZVwiLCBcImV4aXRcIixcbiAgICBcImZ3cml0ZVwiLCBcImZmbHVzaFwiLCBcIm1lbWNweVwiLCBcIm1lbWNtcFwiLCBcIkZJTEVcIiwgXCJmcG9zX3RcIiwgXCJkaXZfdFwiLCBcImxkaXZfdFwiLCBcImxsZGl2X3RcIiwgXCJ3Y2hhcl90XCIsIFwibWF4X2FsaWduX3RcIixcbiAgICBcIm9mZnNldG9mXCIsIFwiYWxpZ25hc1wiLCBcImFsaWdub2ZcIiwgXCJub3JldHVyblwiLCBcInRydWVcIiwgXCJmYWxzZVwiLCBcImFzc2VydFwiLCBcInN0YXRpY19hc3NlcnRcIiwgXCJlcnJub1wiLFxuICAgIFwiRU9GXCIsIFwiQlVGU0laXCIsIFwiRk9QRU5fTUFYXCIsIFwiRklMRU5BTUVfTUFYXCIsIFwiTF90bXBuYW1cIiwgXCJTRUVLX0NVUlwiLCBcIlNFRUtfRU5EXCIsIFwiU0VFS19TRVRcIiwgXCJUTVBfTUFYXCIsXG4gICAgXCJFWElUX0ZBSUxVUkVcIiwgXCJFWElUX1NVQ0NFU1NcIiwgXCJNQl9DVVJfTUFYXCIsIFwiTUJfTEVOX01BWFwiLCBcIlJBTkRfTUFYXCIsXG4gICAgXCJyZW1vdmVcIiwgXCJyZW5hbWVcIiwgXCJ0bXBmaWxlXCIsIFwidG1wbmFtXCIsIFwiZmNsb3NlXCIsIFwiZm9wZW5cIiwgXCJmcmVvcGVuXCIsIFwic2V0YnVmXCIsIFwic2V0dmJ1ZlwiLFxuICAgIFwiZnByaW50ZlwiLCBcImZzY2FuZlwiLCBcInByaW50ZlwiLCBcInNjYW5mXCIsIFwic25wcmludGZcIiwgXCJzcHJpbnRmXCIsIFwic3NjYW5mXCIsIFwidmZwcmludGZcIiwgXCJ2ZnNjYW5mXCIsIFwidnByaW50ZlwiLFxuICAgIFwidnNjYW5mXCIsIFwidnNucHJpbnRmXCIsIFwidnNwcmludGZcIiwgXCJ2c3NjYW5mXCIsIFwiZmdldGNcIiwgXCJmZ2V0c1wiLCBcImZwdXRjXCIsIFwiZnB1dHNcIiwgXCJnZXRjXCIsIFwiZ2V0Y2hhclwiLFxuICAgIFwicHV0Y1wiLCBcInB1dGNoYXJcIiwgXCJwdXRzXCIsIFwidW5nZXRjXCIsIFwiZnJlYWRcIiwgXCJmZ2V0cG9zXCIsIFwiZnNlZWtcIiwgXCJmc2V0cG9zXCIsIFwiZnRlbGxcIiwgXCJyZXdpbmRcIiwgXCJjbGVhcmVyclwiLFxuICAgIFwiZmVvZlwiLCBcImZlcnJvclwiLCBcInBlcnJvclwiLCBcImF0b2ZcIiwgXCJhdG9pXCIsIFwiYXRvbFwiLCBcImF0b2xsXCIsIFwic3RydG9kXCIsIFwic3RydG9mXCIsIFwic3RydG9sZFwiLCBcInN0cnRvbFwiLFxuICAgIFwic3RydG9sbFwiLCBcInN0cnRvdWxcIiwgXCJzdHJ0b3VsbFwiLCBcInJhbmRcIiwgXCJzcmFuZFwiLCBcImFsaWduZWRfYWxsb2NcIiwgXCJjYWxsb2NcIiwgXCJyZWFsbG9jXCIsIFwiYWJvcnRcIiwgXCJhdGV4aXRcIixcbiAgICBcImF0X3F1aWNrX2V4aXRcIiwgXCJxdWlja19leGl0XCIsIFwiZ2V0ZW52XCIsIFwic3lzdGVtXCIsIFwiYnNlYXJjaFwiLCBcInFzb3J0XCIsIFwiYWJzXCIsIFwibGFic1wiLCBcImxsYWJzXCIsIFwiZGl2XCIsIFwibGRpdlwiLFxuICAgIFwibGxkaXZcIiwgXCJtYmxlblwiLCBcIm1idG93Y1wiLCBcIndjdG9tYlwiLCBcIm1ic3Rvd2NzXCIsIFwid2NzdG9tYnNcIiwgXCJtZW1tb3ZlXCIsIFwic3RyY3B5XCIsIFwic3RybmNweVwiLCBcInN0cmNhdFwiLFxuICAgIFwic3RybmNhdFwiLCBcInN0cmNtcFwiLCBcInN0cmNvbGxcIiwgXCJzdHJuY21wXCIsIFwic3RyeGZybVwiLCBcIm1lbWNoclwiLCBcInN0cmNoclwiLCBcInN0cmNzcG5cIiwgXCJzdHJwYnJrXCIsIFwic3RycmNoclwiLFxuICAgIFwic3Ryc3BuXCIsIFwic3Ryc3RyXCIsIFwic3RydG9rXCIsIFwibWVtc2V0XCIsIFwic3RyZXJyb3JcIiwgXCJzdHJsZW5cIlxuICBdKSxcbiAgY3NoYXJwOiBuZXcgU2V0KFtcbiAgICBcIl9fYXJnbGlzdFwiLCBcIl9fbWFrZXJlZlwiLCBcIl9fcmVmdHlwZVwiLCBcIl9fcmVmdmFsdWVcIiwgXCJhYnN0cmFjdFwiLCBcImFkZFwiLCBcImFsaWFzXCIsIFwiYWxsb3dzXCIsIFwiYW5kXCIsIFwiYXNcIixcbiAgICBcImFzY2VuZGluZ1wiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJiYXNlXCIsIFwiYm9vbFwiLCBcImJyZWFrXCIsXG4gICAgXCJieVwiLCBcImJ5dGVcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjaGFyXCIsIFwiY2hlY2tlZFwiLCBcImNsYXNzXCIsIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlY2ltYWxcIiwgXCJkZWZhdWx0XCIsXG4gICAgXCJkZWxlZ2F0ZVwiLCBcImRlc2NlbmRpbmdcIiwgXCJkb1wiLCBcImRvdWJsZVwiLCBcImR5bmFtaWNcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImVxdWFsc1wiLCBcImV2ZW50XCIsIFwiZXhwbGljaXRcIiwgXCJleHRlbnNpb25cIiwgXCJleHRlcm5cIixcbiAgICBcImZhbHNlXCIsIFwiZmllbGRcIiwgXCJmaWxlXCIsIFwiZmluYWxseVwiLCBcImZpeGVkXCIsIFwiZmxvYXRcIiwgXCJmb3JcIiwgXCJmb3JlYWNoXCIsIFwiZnJvbVwiLCBcImdldFwiLCBcImdsb2JhbFwiLCBcImdvdG9cIixcbiAgICBcImdyb3VwXCIsIFwiaWZcIiwgXCJpbXBsaWNpdFwiLCBcImluXCIsIFwiaW5pdFwiLCBcImludFwiLCBcImludGVyZmFjZVwiLCBcImludGVybmFsXCIsIFwiaW50b1wiLCBcImlzXCIsIFwiam9pblwiLCBcImxldFwiLCBcImxvY2tcIixcbiAgICBcImxvbmdcIiwgXCJtYW5hZ2VkXCIsIFwibmFtZW9mXCIsIFwibmFtZXNwYWNlXCIsIFwibmV3XCIsIFwibmludFwiLCBcIm5vdFwiLCBcIm5vdG51bGxcIiwgXCJudWxsXCIsIFwibnVpbnRcIiwgXCJvYmplY3RcIiwgXCJvblwiLFxuICAgIFwib3BlcmF0b3JcIiwgXCJvclwiLCBcIm9yZGVyYnlcIiwgXCJvdXRcIiwgXCJvdmVycmlkZVwiLCBcInBhcmFtc1wiLCBcInBhcnRpYWxcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVhZG9ubHlcIixcbiAgICBcInJlY29yZFwiLCBcInJlZlwiLCBcInJlbW92ZVwiLCBcInJlcXVpcmVkXCIsIFwicmV0dXJuXCIsIFwic2J5dGVcIiwgXCJzY29wZWRcIiwgXCJzZWFsZWRcIiwgXCJzZWxlY3RcIiwgXCJzZXRcIiwgXCJzaG9ydFwiLCBcInNpemVvZlwiLFxuICAgIFwic3RhY2thbGxvY1wiLCBcInN0YXRpY1wiLCBcInN0cmluZ1wiLCBcInN0cnVjdFwiLCBcInN3aXRjaFwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlb2ZcIiwgXCJ1aW50XCIsIFwidWxvbmdcIixcbiAgICBcInVuY2hlY2tlZFwiLCBcInVubWFuYWdlZFwiLCBcInVuc2FmZVwiLCBcInVzaG9ydFwiLCBcInVzaW5nXCIsIFwidmFsdWVcIiwgXCJ2YXJcIiwgXCJ2aXJ0dWFsXCIsIFwidm9pZFwiLCBcInZvbGF0aWxlXCIsIFwid2hlblwiLFxuICAgIFwid2hlcmVcIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICBnbzogbmV3IFNldChbXG4gICAgXCJfXCIsIFwiYnJlYWtcIiwgXCJkZWZhdWx0XCIsIFwiZnVuY1wiLCBcImludGVyZmFjZVwiLCBcInNlbGVjdFwiLCBcImNhc2VcIiwgXCJkZWZlclwiLCBcImdvXCIsIFwibWFwXCIsIFwic3RydWN0XCIsIFwiY2hhblwiLFxuICAgIFwiZWxzZVwiLCBcImdvdG9cIiwgXCJwYWNrYWdlXCIsIFwic3dpdGNoXCIsIFwiY29uc3RcIiwgXCJmYWxsdGhyb3VnaFwiLCBcImlmXCIsIFwicmFuZ2VcIiwgXCJ0eXBlXCIsIFwiY29udGludWVcIiwgXCJmb3JcIixcbiAgICBcImltcG9ydFwiLCBcInJldHVyblwiLCBcInZhclwiXG4gIF0pLFxuICBqYXZhOiBuZXcgU2V0KFtcbiAgICBcIl9cIiwgXCJhYnN0cmFjdFwiLCBcImFzc2VydFwiLCBcImJvb2xlYW5cIiwgXCJicmVha1wiLCBcImJ5dGVcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjaGFyXCIsIFwiY2xhc3NcIiwgXCJjb25zdFwiLCBcImNvbnRpbnVlXCIsXG4gICAgXCJkZWZhdWx0XCIsIFwiZG9cIiwgXCJkb3VibGVcIiwgXCJlbHNlXCIsIFwiZW51bVwiLCBcImV4cG9ydHNcIiwgXCJleHRlbmRzXCIsIFwiZmFsc2VcIiwgXCJmaW5hbFwiLCBcImZpbmFsbHlcIiwgXCJmbG9hdFwiLCBcImZvclwiLFxuICAgIFwiZ290b1wiLCBcImlmXCIsIFwiaW1wbGVtZW50c1wiLCBcImltcG9ydFwiLCBcImluc3RhbmNlb2ZcIiwgXCJpbnRcIiwgXCJpbnRlcmZhY2VcIiwgXCJsb25nXCIsIFwibW9kdWxlXCIsIFwibmF0aXZlXCIsIFwibmV3XCIsXG4gICAgXCJub24tc2VhbGVkXCIsIFwibnVsbFwiLCBcIm9wZW5cIiwgXCJvcGVuc1wiLCBcInBhY2thZ2VcIiwgXCJwZXJtaXRzXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInByb3ZpZGVzXCIsIFwicHVibGljXCIsXG4gICAgXCJyZWNvcmRcIiwgXCJyZXF1aXJlc1wiLCBcInJldHVyblwiLCBcInNlYWxlZFwiLCBcInNob3J0XCIsIFwic3RhdGljXCIsIFwic3RyaWN0ZnBcIiwgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInN5bmNocm9uaXplZFwiLFxuICAgIFwidGhpc1wiLCBcInRocm93XCIsIFwidGhyb3dzXCIsIFwidG9cIiwgXCJ0cmFuc2llbnRcIiwgXCJ0cmFuc2l0aXZlXCIsIFwidHJ1ZVwiLCBcInRyeVwiLCBcInVzZXNcIiwgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwidm9sYXRpbGVcIixcbiAgICBcIndoZW5cIiwgXCJ3aGlsZVwiLCBcIndpdGhcIiwgXCJ5aWVsZFwiXG4gIF0pLFxuICBqYXZhc2NyaXB0OiBuZXcgU2V0KFtcbiAgICBcImF3YWl0XCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsIFwiY29udGludWVcIiwgXCJkZWJ1Z2dlclwiLCBcImRlZmF1bHRcIiwgXCJkZWxldGVcIiwgXCJkb1wiLCBcImVsc2VcIixcbiAgICBcImVudW1cIiwgXCJleHBvcnRcIiwgXCJleHRlbmRzXCIsIFwiZmFsc2VcIiwgXCJmaW5hbGx5XCIsIFwiZm9yXCIsIFwiZnVuY3Rpb25cIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbXBvcnRcIiwgXCJpblwiLFxuICAgIFwiaW5zdGFuY2VvZlwiLCBcImludGVyZmFjZVwiLCBcImxldFwiLCBcIm5ld1wiLCBcIm51bGxcIiwgXCJwYWNrYWdlXCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJldHVyblwiLCBcInN0YXRpY1wiLFxuICAgIFwic3VwZXJcIiwgXCJzd2l0Y2hcIiwgXCJ0aGlzXCIsIFwidGhyb3dcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidHlwZW9mXCIsIFwidmFyXCIsIFwidm9pZFwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCJcbiAgXSksXG4gIHBocDogbmV3IFNldChbXG4gICAgXCJfX2hhbHRfY29tcGlsZXJcIiwgXCJhYnN0cmFjdFwiLCBcImFuZFwiLCBcImFycmF5XCIsIFwiYXNcIiwgXCJicmVha1wiLCBcImNhbGxhYmxlXCIsIFwiY2FzZVwiLCBcImNhdGNoXCIsIFwiY2xhc3NcIiwgXCJjbG9uZVwiLFxuICAgIFwiY29uc3RcIiwgXCJjb250aW51ZVwiLCBcImRlY2xhcmVcIiwgXCJkZWZhdWx0XCIsIFwiZGllXCIsIFwiZG9cIiwgXCJlY2hvXCIsIFwiZWxzZVwiLCBcImVsc2VpZlwiLCBcImVtcHR5XCIsIFwiZW5kZGVjbGFyZVwiLFxuICAgIFwiZW5kZm9yXCIsIFwiZW5kZm9yZWFjaFwiLCBcImVuZGlmXCIsIFwiZW5kc3dpdGNoXCIsIFwiZW5kd2hpbGVcIiwgXCJlbnVtXCIsIFwiZXZhbFwiLCBcImV4aXRcIiwgXCJleHRlbmRzXCIsIFwiZmFsc2VcIiwgXCJmaW5hbFwiLFxuICAgIFwiZmluYWxseVwiLCBcImZuXCIsIFwiZm9yXCIsIFwiZm9yZWFjaFwiLCBcImZyb21cIiwgXCJmdW5jdGlvblwiLCBcImdsb2JhbFwiLCBcImdvdG9cIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbmNsdWRlXCIsXG4gICAgXCJpbmNsdWRlX29uY2VcIiwgXCJpbnN0YW5jZW9mXCIsIFwiaW5zdGVhZG9mXCIsIFwiaW50ZXJmYWNlXCIsIFwiaXNzZXRcIiwgXCJpdGVyYWJsZVwiLCBcImxpc3RcIiwgXCJtYXRjaFwiLCBcIm1peGVkXCIsIFwibmFtZXNwYWNlXCIsXG4gICAgXCJuZXZlclwiLCBcIm5ld1wiLCBcIm51bGxcIiwgXCJvYmplY3RcIiwgXCJvclwiLCBcInBhcmVudFwiLCBcInByaW50XCIsIFwicHJpdmF0ZVwiLCBcInByb3RlY3RlZFwiLCBcInB1YmxpY1wiLCBcInJlYWRvbmx5XCIsIFwicmVxdWlyZVwiLFxuICAgIFwicmVxdWlyZV9vbmNlXCIsIFwicmV0dXJuXCIsIFwic2VsZlwiLCBcInN0YXRpY1wiLCBcInN3aXRjaFwiLCBcInRocm93XCIsIFwidHJhaXRcIiwgXCJ0cnVlXCIsIFwidHJ5XCIsIFwidW5zZXRcIiwgXCJ1c2VcIiwgXCJ2YXJcIixcbiAgICBcInZvaWRcIiwgXCJ3aGlsZVwiLCBcInhvclwiLCBcInlpZWxkXCJcbiAgXSksXG4gIHB5dGhvbjogbmV3IFNldChbXG4gICAgXCJGYWxzZVwiLCBcIk5vbmVcIiwgXCJUcnVlXCIsIFwiYW5kXCIsIFwiYXNcIiwgXCJhc3NlcnRcIiwgXCJhc3luY1wiLCBcImF3YWl0XCIsIFwiYm9vbFwiLCBcImJyZWFrXCIsIFwiY2FzZVwiLCBcImNsYXNzXCIsXG4gICAgXCJjb250aW51ZVwiLCBcImRlZlwiLCBcImRlbFwiLCBcImVsaWZcIiwgXCJlbHNlXCIsIFwiZXhjZXB0XCIsIFwiZXhlY1wiLCBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJmcm9tXCIsIFwiZ2xvYmFsXCIsIFwiaWZcIixcbiAgICBcImltcG9ydFwiLCBcImluXCIsIFwiaW50XCIsIFwiaXNcIiwgXCJsYW1iZGFcIiwgXCJtYXRjaFwiLCBcIm5vbmxvY2FsXCIsIFwibm90XCIsIFwib3JcIiwgXCJwYXNzXCIsIFwicHJpbnRcIixcbiAgICBcInJhaXNlXCIsIFwicmV0dXJuXCIsIFwic3RyXCIsIFwidHJ5XCIsIFwidHlwZVwiLCBcIndoaWxlXCIsIFwid2l0aFwiLCBcInlpZWxkXCIsIFwiX1wiLCBcIl9fZGVidWdfX1wiXG4gIF0pLFxuICBydWJ5OiBuZXcgU2V0KFtcbiAgICBcIkJFR0lOXCIsIFwiRU5EXCIsIFwiX19FTkNPRElOR19fXCIsIFwiX19FTkRfX1wiLCBcIl9fRklMRV9fXCIsIFwiX19MSU5FX19cIiwgXCJhbGlhc1wiLCBcImFuZFwiLCBcImJlZ2luXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsXG4gICAgXCJjbGFzc1wiLCBcImRlZlwiLCBcImRlZmluZWQ/XCIsIFwiZG9cIiwgXCJlbHNlXCIsIFwiZWxzaWZcIiwgXCJlbmRcIiwgXCJlbnN1cmVcIiwgXCJmYWxzZVwiLCBcImZvclwiLCBcImlmXCIsIFwiaW5cIiwgXCJtb2R1bGVcIixcbiAgICBcIm5leHRcIiwgXCJuaWxcIiwgXCJub3RcIiwgXCJvclwiLCBcInJlZG9cIiwgXCJyZXNjdWVcIiwgXCJyZXRyeVwiLCBcInJldHVyblwiLCBcInNlbGZcIiwgXCJzdXBlclwiLCBcInRoZW5cIiwgXCJ0cnVlXCIsIFwidW5kZWZcIixcbiAgICBcInVubGVzc1wiLCBcInVudGlsXCIsIFwid2hlblwiLCBcIndoaWxlXCIsIFwieWllbGRcIlxuICBdKSxcbiAgdHlwZXNjcmlwdDogbmV3IFNldChbXG4gICAgXCJhYnN0cmFjdFwiLCBcImFueVwiLCBcImFzXCIsIFwiYXNzZXJ0c1wiLCBcImFzeW5jXCIsIFwiYXdhaXRcIiwgXCJib29sZWFuXCIsIFwiYnJlYWtcIiwgXCJjYXNlXCIsIFwiY2F0Y2hcIiwgXCJjbGFzc1wiLCBcImNvbnN0XCIsXG4gICAgXCJjb25zdHJ1Y3RvclwiLCBcImNvbnRpbnVlXCIsIFwiZGVidWdnZXJcIiwgXCJkZWNsYXJlXCIsIFwiZGVmYXVsdFwiLCBcImRlbGV0ZVwiLCBcImRvXCIsIFwiZWxzZVwiLCBcImVudW1cIiwgXCJleHBvcnRcIiwgXCJleHRlbmRzXCIsXG4gICAgXCJmYWxzZVwiLCBcImZpbmFsbHlcIiwgXCJmb3JcIiwgXCJmcm9tXCIsIFwiZnVuY3Rpb25cIiwgXCJnZXRcIiwgXCJpZlwiLCBcImltcGxlbWVudHNcIiwgXCJpbXBvcnRcIiwgXCJpblwiLCBcImluZmVyXCIsIFwiaW5zdGFuY2VvZlwiLFxuICAgIFwiaW50ZXJmYWNlXCIsIFwiaXNcIiwgXCJrZXlvZlwiLCBcImxldFwiLCBcIm1vZHVsZVwiLCBcIm5hbWVzcGFjZVwiLCBcIm5ldmVyXCIsIFwibmV3XCIsIFwibnVsbFwiLCBcIm51bWJlclwiLCBcIm9iamVjdFwiLCBcIm9mXCIsXG4gICAgXCJvdmVycmlkZVwiLCBcInBhY2thZ2VcIiwgXCJwcml2YXRlXCIsIFwicHJvdGVjdGVkXCIsIFwicHVibGljXCIsIFwicmVhZG9ubHlcIiwgXCJyZXF1aXJlXCIsIFwicmV0dXJuXCIsIFwic2F0aXNmaWVzXCIsIFwic2V0XCIsXG4gICAgXCJzdGF0aWNcIiwgXCJzdHJpbmdcIiwgXCJzdXBlclwiLCBcInN3aXRjaFwiLCBcInN5bWJvbFwiLCBcInRoaXNcIiwgXCJ0aHJvd1wiLCBcInRydWVcIiwgXCJ0cnlcIiwgXCJ0eXBlXCIsIFwidHlwZW9mXCIsIFwidW5kZWZpbmVkXCIsXG4gICAgXCJ1bmlxdWVcIiwgXCJ1bmtub3duXCIsIFwidXNpbmdcIiwgXCJ2YXJcIiwgXCJ2b2lkXCIsIFwid2hpbGVcIiwgXCJ3aXRoXCIsIFwieWllbGRcIlxuICBdKSxcbiAgd2FzbTogbmV3IFNldCgpXG59XG5cbmNvbnN0IHBocEludmFsaWRQYXJhbWV0ZXJCaW5kaW5ncyA9IG5ldyBTZXQoW1xuICBcIkdMT0JBTFNcIiwgXCJfQ09PS0lFXCIsIFwiX0VOVlwiLCBcIl9GSUxFU1wiLCBcIl9HRVRcIiwgXCJfUE9TVFwiLCBcIl9SRVFVRVNUXCIsIFwiX1NFUlZFUlwiLCBcIl9TRVNTSU9OXCIsIFwidGhpc1wiXG5dKVxuY29uc3QgcGhwSW52YWxpZEFzc2lnbmVkQmluZGluZ3MgPSBuZXcgU2V0KFtcIkdMT0JBTFNcIiwgXCJ0aGlzXCJdKVxuXG4vKiogQHR5cGUge1JlYWRvbmx5PFBhcnRpYWw8UmVjb3JkPGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkJhY2tlbmRMYW5ndWFnZSwgU2V0PHN0cmluZz4+Pj59ICovXG5jb25zdCByZXNlcnZlZFR5cGVOYW1lcyA9IE9iamVjdC5mcmVlemUoe1xuICBqYXZhOiBuZXcgU2V0KFtcIkJvb2xlYW5cIiwgXCJJbnRlZ2VyXCIsIFwiTWFpblwiLCBcIk1hdGhcIiwgXCJPYmplY3RcIiwgXCJTdHJpbmdcIiwgXCJTeXN0ZW1cIl0pLFxuICBqYXZhc2NyaXB0OiBuZXcgU2V0KFtcIkFycmF5XCIsIFwiQm9vbGVhblwiLCBcIk1hcFwiLCBcIk1hdGhcIiwgXCJOdW1iZXJcIiwgXCJPYmplY3RcIiwgXCJSZWZsZWN0XCIsIFwiU3RyaW5nXCJdKSxcbiAgcGhwOiBuZXcgU2V0KFtcbiAgICBcImFkZHJlc3NpbmZvXCIsIFwiYWxsb3dkeW5hbWljcHJvcGVydGllc1wiLCBcImFwcGVuZGl0ZXJhdG9yXCIsIFwiYXJndW1lbnRjb3VudGVycm9yXCIsIFwiYXJpdGhtZXRpY2Vycm9yXCIsIFwiYXJyYXlhY2Nlc3NcIixcbiAgICBcImFycmF5aXRlcmF0b3JcIiwgXCJhcnJheW9iamVjdFwiLCBcImFzc2VydGlvbmVycm9yXCIsIFwiYXR0cmlidXRlXCIsIFwiYmFja2VkZW51bVwiLCBcImJhZGZ1bmN0aW9uY2FsbGV4Y2VwdGlvblwiLFxuICAgIFwiYmFkbWV0aG9kY2FsbGV4Y2VwdGlvblwiLCBcImNhY2hpbmdpdGVyYXRvclwiLFxuICAgIFwiY2FsbGJhY2tmaWx0ZXJpdGVyYXRvclwiLCBcImNsb3NlZGdlbmVyYXRvcmV4Y2VwdGlvblwiLCBcImNsb3N1cmVcIiwgXCJjb21waWxlZXJyb3JcIiwgXCJjb3VudGFibGVcIiwgXCJkYXRlZXJyb3JcIiwgXCJkYXRlZXhjZXB0aW9uXCIsXG4gICAgXCJkYXRlaW50ZXJ2YWxcIiwgXCJkYXRlaW52YWxpZG9wZXJhdGlvbmV4Y2VwdGlvblwiLCBcImRhdGVpbnZhbGlkdGltZXpvbmVleGNlcHRpb25cIiwgXCJkYXRlbWFsZm9ybWVkaW50ZXJ2YWxzdHJpbmdleGNlcHRpb25cIixcbiAgICBcImRhdGVtYWxmb3JtZWRwZXJpb2RzdHJpbmdleGNlcHRpb25cIiwgXCJkYXRlbWFsZm9ybWVkc3RyaW5nZXhjZXB0aW9uXCIsIFwiZGF0ZW9iamVjdGVycm9yXCIsIFwiZGF0ZXBlcmlvZFwiLCBcImRhdGVyYW5nZWVycm9yXCIsXG4gICAgXCJkYXRldGltZVwiLCBcImRhdGV0aW1laW1tdXRhYmxlXCIsIFwiZGF0ZXRpbWVpbnRlcmZhY2VcIiwgXCJkYXRldGltZXpvbmVcIiwgXCJkZWZsYXRlY29udGV4dFwiLCBcImRlbGF5ZWR0YXJnZXR2YWxpZGF0aW9uXCIsXG4gICAgXCJkZXByZWNhdGVkXCIsIFwiZGlyZWN0b3J5XCIsIFwiZGlyZWN0b3J5aXRlcmF0b3JcIiwgXCJkaXZpc2lvbmJ5emVyb2Vycm9yXCIsIFwiZG9tYWluZXhjZXB0aW9uXCIsIFwiZW1wdHlpdGVyYXRvclwiLCBcImVycm9yXCIsXG4gICAgXCJlcnJvcmV4Y2VwdGlvblwiLCBcImV4Y2VwdGlvblwiLCBcImZmaVwiLCBcImZpYmVyXCIsIFwiZmliZXJlcnJvclwiLCBcImZpbGVzeXN0ZW1pdGVyYXRvclwiLCBcImZpbHRlcml0ZXJhdG9yXCIsIFwiZmluZm9cIiwgXCJnZW5lcmF0b3JcIixcbiAgICBcImdsb2JpdGVyYXRvclwiLCBcImhhc2hjb250ZXh0XCIsIFwiaW5maW5pdGVpdGVyYXRvclwiLCBcImluZmxhdGVjb250ZXh0XCIsIFwiaW50ZXJuYWxpdGVyYXRvclwiLCBcImludmFsaWRhcmd1bWVudGV4Y2VwdGlvblwiLFxuICAgIFwiaXRlcmF0b3JcIiwgXCJpdGVyYXRvcmFnZ3JlZ2F0ZVwiLCBcIml0ZXJhdG9yaXRlcmF0b3JcIiwgXCJqc29uZXhjZXB0aW9uXCIsIFwianNvbnNlcmlhbGl6YWJsZVwiLCBcImxlbmd0aGV4Y2VwdGlvblwiLFxuICAgIFwibGlieG1sZXJyb3JcIiwgXCJsaW1pdGl0ZXJhdG9yXCIsIFwibG9naWNleGNlcHRpb25cIiwgXCJtdWx0aXBsZWl0ZXJhdG9yXCIsIFwibm9kaXNjYXJkXCIsIFwibm9yZXdpbmRpdGVyYXRvclwiLFxuICAgIFwib3BlbnNzbGFzeW1tZXRyaWNrZXlcIiwgXCJvcGVuc3NsY2VydGlmaWNhdGVcIiwgXCJvcGVuc3NsY2VydGlmaWNhdGVzaWduaW5ncmVxdWVzdFwiLFxuICAgIFwib3V0b2Zib3VuZHNleGNlcHRpb25cIiwgXCJvdXRvZnJhbmdlZXhjZXB0aW9uXCIsIFwib3V0ZXJpdGVyYXRvclwiLCBcIm92ZXJmbG93ZXhjZXB0aW9uXCIsIFwib3ZlcnJpZGVcIiwgXCJwYXJlbnRpdGVyYXRvclwiLFxuICAgIFwicGFyc2VlcnJvclwiLCBcInBkb1wiLCBcInBkb2V4Y2VwdGlvblwiLCBcInBkb3Jvd1wiLCBcInBkb3N0YXRlbWVudFwiLCBcInBoYXJcIiwgXCJwaGFyZGF0YVwiLCBcInBoYXJleGNlcHRpb25cIiwgXCJwaGFyZmlsZWluZm9cIixcbiAgICBcInBocF91c2VyX2ZpbHRlclwiLCBcInBocHRva2VuXCIsIFwicHJvcGVydHlob29rdHlwZVwiLCBcInJhbmdlZXhjZXB0aW9uXCIsIFwicmVjdXJzaXZlYXJyYXlpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZWNhY2hpbmdpdGVyYXRvclwiLFxuICAgIFwicmVjdXJzaXZlY2FsbGJhY2tmaWx0ZXJpdGVyYXRvclwiLFxuICAgIFwicmVjdXJzaXZlZGlyZWN0b3J5aXRlcmF0b3JcIiwgXCJyZWN1cnNpdmVmaWx0ZXJpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZWl0ZXJhdG9yXCIsIFwicmVjdXJzaXZlaXRlcmF0b3JpdGVyYXRvclwiLFxuICAgIFwicmVjdXJzaXZlcmVnZXhpdGVyYXRvclwiLCBcInJlY3Vyc2l2ZXRyZWVpdGVyYXRvclwiLCBcInJlZmxlY3Rpb25cIiwgXCJyZWZsZWN0aW9uYXR0cmlidXRlXCIsIFwicmVmbGVjdGlvbmNsYXNzXCIsXG4gICAgXCJyZWZsZWN0aW9uY2xhc3Njb25zdGFudFwiLCBcInJlZmxlY3Rpb25jb25zdGFudFwiLCBcInJlZmxlY3Rpb25lbnVtXCIsIFwicmVmbGVjdGlvbmVudW1iYWNrZWRjYXNlXCIsIFwicmVmbGVjdGlvbmVudW11bml0Y2FzZVwiLFxuICAgIFwicmVmbGVjdGlvbmV4Y2VwdGlvblwiLCBcInJlZmxlY3Rpb25leHRlbnNpb25cIiwgXCJyZWZsZWN0aW9uZmliZXJcIiwgXCJyZWZsZWN0aW9uZnVuY3Rpb25cIiwgXCJyZWZsZWN0aW9uZnVuY3Rpb25hYnN0cmFjdFwiLFxuICAgIFwicmVmbGVjdGlvbmdlbmVyYXRvclwiLCBcInJlZmxlY3Rpb25pbnRlcnNlY3Rpb250eXBlXCIsIFwicmVmbGVjdGlvbm1ldGhvZFwiLCBcInJlZmxlY3Rpb25uYW1lZHR5cGVcIiwgXCJyZWZsZWN0aW9ub2JqZWN0XCIsXG4gICAgXCJyZWZsZWN0aW9ucGFyYW1ldGVyXCIsIFwicmVmbGVjdGlvbnByb3BlcnR5XCIsIFwicmVmbGVjdGlvbnJlZmVyZW5jZVwiLCBcInJlZmxlY3Rpb250eXBlXCIsIFwicmVmbGVjdGlvbnVuaW9udHlwZVwiLFxuICAgIFwicmVmbGVjdGlvbnplbmRleHRlbnNpb25cIiwgXCJyZWZsZWN0b3JcIiwgXCJyZWdleGl0ZXJhdG9yXCIsIFwicmVxdWVzdHBhcnNlYm9keWV4Y2VwdGlvblwiLCBcInJldHVybnR5cGV3aWxsY2hhbmdlXCIsXG4gICAgXCJyb3VuZGluZ21vZGVcIiwgXCJydW50aW1lZXhjZXB0aW9uXCIsIFwic2Vla2FibGVpdGVyYXRvclwiLCBcInNlbnNpdGl2ZXBhcmFtZXRlclwiLCBcInNlbnNpdGl2ZXBhcmFtZXRlcnZhbHVlXCIsIFwic2VyaWFsaXphYmxlXCIsXG4gICAgXCJzZXNzaW9uaGFuZGxlclwiLCBcInNlc3Npb25oYW5kbGVyaW50ZXJmYWNlXCIsIFwic2Vzc2lvbmlkaW50ZXJmYWNlXCIsIFwic2Vzc2lvbnVwZGF0ZXRpbWVzdGFtcGhhbmRsZXJpbnRlcmZhY2VcIiwgXCJzaG1vcFwiLFxuICAgIFwic29ja2V0XCIsIFwic29kaXVtZXhjZXB0aW9uXCIsIFwic3BsZG91Ymx5bGlua2VkbGlzdFwiLCBcInNwbGZpbGVpbmZvXCIsXG4gICAgXCJzcGxmaWxlb2JqZWN0XCIsIFwic3BsZml4ZWRhcnJheVwiLCBcInNwbGhlYXBcIiwgXCJzcGxtYXhoZWFwXCIsIFwic3BsbWluaGVhcFwiLCBcInNwbG9iamVjdHN0b3JhZ2VcIiwgXCJzcGxvYnNlcnZlclwiLFxuICAgIFwic3BscHJpb3JpdHlxdWV1ZVwiLCBcInNwbHF1ZXVlXCIsIFwic3Bsc3RhY2tcIiwgXCJzcGxzdWJqZWN0XCIsIFwic3BsdGVtcGZpbGVvYmplY3RcIiwgXCJzdGRjbGFzc1wiLCBcInN0cmVhbWJ1Y2tldFwiLCBcInN0cmluZ2FibGVcIixcbiAgICBcInN5c3ZtZXNzYWdlcXVldWVcIiwgXCJzeXN2c2VtYXBob3JlXCIsIFwic3lzdnNoYXJlZG1lbW9yeVwiLCBcInRocm93YWJsZVwiLCBcInRyYXZlcnNhYmxlXCIsIFwidHlwZWVycm9yXCIsIFwidW5kZXJmbG93ZXhjZXB0aW9uXCIsXG4gICAgXCJ1bmV4cGVjdGVkdmFsdWVleGNlcHRpb25cIiwgXCJ1bmhhbmRsZWRtYXRjaGVycm9yXCIsIFwidW5pdGVudW1cIiwgXCJ2YWx1ZWVycm9yXCIsIFwid2Vha21hcFwiLCBcIndlYWtyZWZlcmVuY2VcIlxuICBdKSxcbiAgcnVieTogbmV3IFNldChbXG4gICAgXCJBcmd1bWVudEVycm9yXCIsIFwiQXJyYXlcIiwgXCJCYXNpY09iamVjdFwiLCBcIkJpbmRpbmdcIiwgXCJDbGFzc1wiLCBcIkNsb3NlZFF1ZXVlRXJyb3JcIiwgXCJDb21wYXJhYmxlXCIsIFwiQ29tcGxleFwiLCBcIkRhdGFcIiwgXCJEaXJcIixcbiAgICBcIkVuY29kaW5nXCIsIFwiRW5jb2RpbmdFcnJvclwiLCBcIkVudW1lcmFibGVcIiwgXCJFbnVtZXJhdG9yXCIsIFwiRU9GRXJyb3JcIiwgXCJFcnJub1wiLCBcIkV4Y2VwdGlvblwiLCBcIkZhbHNlQ2xhc3NcIiwgXCJGaWJlclwiLFxuICAgIFwiRmliZXJFcnJvclwiLCBcIkZpbGVcIiwgXCJGaWxlVGVzdFwiLCBcIkZsb2F0XCIsIFwiRnJvemVuRXJyb3JcIiwgXCJHQ1wiLCBcIkhhc2hcIiwgXCJJT1wiLCBcIklPRXJyb3JcIiwgXCJJbmRleEVycm9yXCIsIFwiSW50ZWdlclwiLFxuICAgIFwiSW50ZXJydXB0XCIsIFwiS2VybmVsXCIsIFwiS2V5RXJyb3JcIiwgXCJMb2FkRXJyb3JcIiwgXCJMb2NhbEp1bXBFcnJvclwiLCBcIk1hcnNoYWxcIiwgXCJNYXRjaERhdGFcIiwgXCJNYXRoXCIsIFwiTWV0aG9kXCIsIFwiTW9kdWxlXCIsXG4gICAgXCJNdXRleFwiLCBcIk5hbWVFcnJvclwiLCBcIk5pbENsYXNzXCIsIFwiTm9NZW1vcnlFcnJvclwiLCBcIk5vTWV0aG9kRXJyb3JcIiwgXCJOb3RJbXBsZW1lbnRlZEVycm9yXCIsIFwiTnVtZXJpY1wiLCBcIk9iamVjdFwiLFxuICAgIFwiT2JqZWN0U3BhY2VcIiwgXCJQcm9jXCIsIFwiUHJvY2Vzc1wiLCBcIlF1ZXVlXCIsIFwiUmFjdG9yXCIsIFwiUmFuZG9tXCIsIFwiUmFuZ2VcIiwgXCJSYXRpb25hbFwiLCBcIlJlZ2V4cFwiLCBcIlJlZ2V4cEVycm9yXCIsIFwiUnVieVZNXCIsXG4gICAgXCJSdW50aW1lRXJyb3JcIiwgXCJTY3JpcHRFcnJvclwiLCBcIlNlY3VyaXR5RXJyb3JcIiwgXCJTaWduYWxcIiwgXCJTaWduYWxFeGNlcHRpb25cIiwgXCJTaXplZFF1ZXVlXCIsIFwiU3RhbmRhcmRFcnJvclwiLCBcIlN0b3BJdGVyYXRpb25cIixcbiAgICBcIlN0cmluZ1wiLCBcIlN0cnVjdFwiLCBcIlN5bWJvbFwiLCBcIlN5bnRheEVycm9yXCIsIFwiU3lzdGVtQ2FsbEVycm9yXCIsIFwiU3lzdGVtRXhpdFwiLCBcIlN5c3RlbVN0YWNrRXJyb3JcIiwgXCJUaHJlYWRcIiwgXCJUaHJlYWRFcnJvclwiLFxuICAgIFwiVGhyZWFkR3JvdXBcIiwgXCJUaW1lXCIsIFwiVHJhY2VQb2ludFwiLCBcIlRydWVDbGFzc1wiLCBcIlR5cGVFcnJvclwiLCBcIlVuYm91bmRNZXRob2RcIiwgXCJVbmNhdWdodFRocm93RXJyb3JcIiwgXCJXYXJuaW5nXCIsXG4gICAgXCJaZXJvRGl2aXNpb25FcnJvclwiXG4gIF0pLFxuICB0eXBlc2NyaXB0OiBuZXcgU2V0KFtcIkFycmF5XCIsIFwiQm9vbGVhblwiLCBcIk1hcFwiLCBcIk1hdGhcIiwgXCJOdW1iZXJcIiwgXCJPYmplY3RcIiwgXCJSZWFkb25seUFycmF5XCIsIFwiUmVhZG9ubHlNYXBcIiwgXCJSZWZsZWN0XCIsIFwiU3RyaW5nXCJdKVxufSlcblxuLyoqXG4gKiBWYWxpZGF0ZXMgYW4gaWRlbnRpZmllciBhZ2FpbnN0IHRoZSB0YXJnZXQgYmFja2VuZCdzIGRlbGliZXJhdGVseSBuYXJyb3cgbGV4aWNhbCBjb250cmFjdC5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmFja2VuZExhbmd1YWdlfSBsYW5ndWFnZSAtIFRhcmdldCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gbmFtZSAtIENhbmRpZGF0ZSBzZW1hbnRpYyBpZGVudGlmaWVyLlxuICogQHBhcmFtIHtzdHJpbmd9IHJvbGUgLSBJZGVudGlmaWVyIHJvbGUgZm9yIGRpYWdub3N0aWNzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5Tb3VyY2VMb2NhdGlvbiB8IHVuZGVmaW5lZH0gbG9jYXRpb24gLSBPcmlnaW5hdGluZyBsb2NhdGlvbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUYXJnZXRJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCByb2xlLCBsb2NhdGlvbikge1xuICBpZiAodHlwZW9mIG5hbWUgIT0gXCJzdHJpbmdcIikgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyYCwgbG9jYXRpb24pXG5cbiAgY29uc3QgcmVzZXJ2ZWROYW1lID0gbGFuZ3VhZ2UgPT0gXCJwaHBcIiA/IG5hbWUudG9Mb3dlckNhc2UoKSA6IG5hbWVcbiAgY29uc3Qgc3ludGF4TGFuZ3VhZ2UgPSBsYW5ndWFnZSA9PSBcImlvc1wiID8gXCJzd2lmdFwiIDogbGFuZ3VhZ2UgPT0gXCJmbHV0dGVyXCIgPyBcImRhcnRcIiA6IGxhbmd1YWdlXG5cbiAgaWYgKCFpZGVudGlmaWVyUGF0dGVybnNbc3ludGF4TGFuZ3VhZ2VdLnRlc3QobmFtZSkgfHwgcmVzZXJ2ZWRXb3Jkc1tzeW50YXhMYW5ndWFnZV0uaGFzKHJlc2VydmVkTmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcInB5dGhvblwiICYmIG5hbWUubm9ybWFsaXplKFwiTkZLQ1wiKSAhPSBuYW1lIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJjXCIgJiYgIWlzQ0lkZW50aWZpZXIobmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcInJ1c3RcIiAmJiAhaXNSdXN0SWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwiemlnXCIgJiYgIWlzWmlnSWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwiY3BwXCIgJiYgIWlzQ3BwSWRlbnRpZmllcihuYW1lKSB8fFxuICAgIGxhbmd1YWdlID09IFwiZGFydFwiICYmICFpc0RhcnRJZGVudGlmaWVyKG5hbWUpIHx8XG4gICAgbGFuZ3VhZ2UgPT0gXCJzd2lmdFwiICYmICghaXNTd2lmdElkZW50aWZpZXIobmFtZSkgfHwgbmFtZS5ub3JtYWxpemUoXCJORkNcIikgIT0gbmFtZSkgfHxcbiAgICBsYW5ndWFnZSA9PSBcImtvdGxpblwiICYmICghaXNLb3RsaW5JZGVudGlmaWVyKG5hbWUpIHx8IG5hbWUubm9ybWFsaXplKFwiTkZDXCIpICE9IG5hbWUpKSB7XG4gICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyICcke25hbWV9J2AsIGxvY2F0aW9uKVxuICB9XG59XG5cbi8qKlxuICogUHJvdGVjdHMgdGhlIGV4YWN0IEMgaGVhZGVyIGVudmlyb25tZW50IGFuZCBpbXBsZW1lbnRhdGlvbi1yZXNlcnZlZCBuYW1lc3BhY2UgaW4gZWl0aGVyIGRpcmVjdGlvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyIGlkZW50aWZpZXIuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgc3BlbGxpbmcgaXMgc2FmZSBpbiB0aGUgY2Fub25pY2FsIHRyYW5zbGF0aW9uIHVuaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy5jLnRlc3QobmFtZSkgJiYgIXJlc2VydmVkV29yZHMuYy5oYXMobmFtZSkgJiZcbiAgICAhL14oPzpzZW1hbnRpZm9sZF98U0VNQU5USUZPTERffFNlbWFudGlmb2xkfGF0b21pY198SU5UWzAtOV9BLVpdfFVJTlRbMC05X0EtWl18SU5UTUFYX3xVSU5UTUFYX3xTSVpFX3xQVFJESUZGX3xTSUdfQVRPTUlDX3xXQ0hBUl98V0lOVF98Q0hBUl98U0NIQVJffFVDSEFSX3xTSFJUX3xVU0hSVF98TE9OR198VUxPTkdffExMT05HX3xVTExPTkdfKS91LnRlc3QobmFtZSkgJiZcbiAgICAhL14oPzp1P2ludCg/Ojh8MTZ8MzJ8NjR8bWF4fHB0cnxfbGVhc3RbMC05XSt8X2Zhc3RbMC05XSspX3QpJC91LnRlc3QobmFtZSlcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgYSBiaW5kaW5nIGlkZW50aWZpZXIgYWdhaW5zdCB0YXJnZXQgcmVzdHJpY3Rpb25zIGJleW9uZCBnZW5lcmFsIGlkZW50aWZpZXIgc3ludGF4LlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9IGxhbmd1YWdlIC0gVGFyZ2V0IGxhbmd1YWdlLlxuICogQHBhcmFtIHt1bmtub3dufSBuYW1lIC0gQ2FuZGlkYXRlIHNlbWFudGljIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gcm9sZSAtIEJpbmRpbmcgcm9sZSBmb3IgZGlhZ25vc3RpY3MuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNvdXJjZUxvY2F0aW9uIHwgdW5kZWZpbmVkfSBsb2NhdGlvbiAtIE9yaWdpbmF0aW5nIGxvY2F0aW9uLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhcmdldEJpbmRpbmdJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCByb2xlLCBsb2NhdGlvbikge1xuICB2YWxpZGF0ZVRhcmdldElkZW50aWZpZXIobGFuZ3VhZ2UsIG5hbWUsIHJvbGUsIGxvY2F0aW9uKVxuXG4gIGNvbnN0IGludmFsaWRUeXBlU2NyaXB0QmluZGluZyA9IGxhbmd1YWdlID09IFwidHlwZXNjcmlwdFwiICYmIChuYW1lID09IFwiYXJndW1lbnRzXCIgfHwgbmFtZSA9PSBcImV2YWxcIilcbiAgY29uc3QgaW52YWxpZFBocFZhcmlhYmxlID0gbGFuZ3VhZ2UgPT0gXCJwaHBcIiAmJiB0eXBlb2YgbmFtZSA9PSBcInN0cmluZ1wiICYmXG4gICAgKChyb2xlID09IFwicGFyYW1ldGVyXCIgJiYgcGhwSW52YWxpZFBhcmFtZXRlckJpbmRpbmdzLmhhcyhuYW1lKSkgfHxcbiAgICAgICgocm9sZSA9PSBcImxvY2FsXCIgfHwgcm9sZSA9PSBcImFzc2lnbm1lbnQgdGFyZ2V0XCIgfHwgcm9sZSA9PSBcImNhdGNoIGJpbmRpbmdcIikgJiYgcGhwSW52YWxpZEFzc2lnbmVkQmluZGluZ3MuaGFzKG5hbWUpKSlcbiAgY29uc3QgaW52YWxpZFJ1YnlCaW5kaW5nID0gbGFuZ3VhZ2UgPT0gXCJydWJ5XCIgJiYgdHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIiAmJiAvXl9bMS05XSQvdS50ZXN0KG5hbWUpXG5cbiAgaWYgKGludmFsaWRUeXBlU2NyaXB0QmluZGluZyB8fCBpbnZhbGlkUGhwVmFyaWFibGUgfHwgaW52YWxpZFJ1YnlCaW5kaW5nKSB7XG4gICAgdW5zdXBwb3J0ZWRDYXBhYmlsaXR5KGxhbmd1YWdlLCBgJHtyb2xlfSBpZGVudGlmaWVyICcke25hbWV9J2AsIGxvY2F0aW9uKVxuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgbm9taW5hbCByZWNvcmQvdHlwZSBkZWNsYXJhdGlvbiBuYW1lIGZvciB0aGUgb3JpZ2luYWwtZml2ZSB0YXJnZXRzLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5CYWNrZW5kTGFuZ3VhZ2V9IGxhbmd1YWdlIC0gQmFja2VuZCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gbmFtZSAtIENhbmRpZGF0ZSB0eXBlIG5hbWUuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlNvdXJjZUxvY2F0aW9uIHwgdW5kZWZpbmVkfSBsb2NhdGlvbiAtIERlY2xhcmF0aW9uIGxvY2F0aW9uLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRhcmdldFR5cGVJZGVudGlmaWVyKGxhbmd1YWdlLCBuYW1lLCBsb2NhdGlvbikge1xuICBpZiAodHlwZW9mIG5hbWUgIT0gXCJzdHJpbmdcIiB8fCAhL15bQS1aXVtBLVphLXowLTlfXSokL3UudGVzdChuYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYHJlY29yZCB0eXBlIGlkZW50aWZpZXIgJyR7U3RyaW5nKG5hbWUpfSdgLCBsb2NhdGlvbilcbiAgfVxuICBjb25zdCByZXNlcnZlZE5hbWUgPSBsYW5ndWFnZSA9PSBcInBocFwiID8gbmFtZS50b0xvd2VyQ2FzZSgpIDogbmFtZVxuICBjb25zdCBzeW50YXhMYW5ndWFnZSA9IGxhbmd1YWdlID09IFwiaW9zXCIgPyBcInN3aWZ0XCIgOiBsYW5ndWFnZSA9PSBcImZsdXR0ZXJcIiA/IFwiZGFydFwiIDogbGFuZ3VhZ2VcblxuICBpZiAocmVzZXJ2ZWRXb3Jkc1tzeW50YXhMYW5ndWFnZV0uaGFzKHJlc2VydmVkTmFtZSkgfHwgcmVzZXJ2ZWRUeXBlTmFtZXNbbGFuZ3VhZ2VdPy5oYXMocmVzZXJ2ZWROYW1lKSkge1xuICAgIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShsYW5ndWFnZSwgYHJlY29yZCB0eXBlIGlkZW50aWZpZXIgJyR7bmFtZX0nYCwgbG9jYXRpb24pXG4gIH1cbn1cblxuLyoqXG4gKiBQcm90ZWN0cyBDKysga2V5d29yZHMsIHRoZSBhY3R1YWwgaW5jbHVkZWQgQyBsaWJyYXJ5IG5hbWVzL21hY3JvcyBhbmQgdGhlIHNjYWZmb2xkIG5hbWVzcGFjZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyIHNjYWxhciBiaW5kaW5nIG9yIGZ1bmN0aW9uIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBhIGNhbm9uaWNhbCBDKysyMCB0cmFuc2xhdGlvbiB1bml0IGNhbiByZXByZXNlbnQgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NwcElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaXNDSWRlbnRpZmllcihuYW1lKSAmJiAhbmFtZS5pbmNsdWRlcyhcIl9fXCIpICYmICFyZXNlcnZlZFdvcmRzLmNwcC5oYXMobmFtZSlcbn1cblxuLyoqXG4gKiBQcm90ZWN0cyB0aGUgZWRpdGlvbi0yMDIxIHNjYWxhciwgZW50cnkgYW5kIGV4YWN0IGhlbHBlciBlbnZpcm9ubWVudCBpbiBib3RoIGRpcmVjdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlci1vd25lZCBmdW5jdGlvbiBvciBiaW5kaW5nIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvcmRpbmFyeSBSdXN0IHN5bnRheCBjYW4gcmVwcmVzZW50IHRoZSBuYW1lIHNhZmVseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUnVzdElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLnJ1c3QudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy5ydXN0LmhhcyhuYW1lKSAmJiAhbmFtZS5zdGFydHNXaXRoKFwic2VtYW50aWZvbGRfXCIpXG59XG5cbi8qKlxuICogUHJvdGVjdHMgWmlnIGtleXdvcmRzLCBzY2FsYXIgbmFtZXMsIGVudHJ5IHBsdW1iaW5nLCBidWlsdGlucywgYW5kIHRoZSBzdXBwb3J0IG5hbWVzcGFjZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyLW93bmVkIGZ1bmN0aW9uIG9yIGJpbmRpbmcgbmFtZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIG9yZGluYXJ5IHVucXVvdGVkIFppZyBzeW50YXggY2FuIHByZXNlcnZlIHRoZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNaaWdJZGVudGlmaWVyKG5hbWUpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXJQYXR0ZXJucy56aWcudGVzdChuYW1lKSAmJiAhcmVzZXJ2ZWRXb3Jkcy56aWcuaGFzKG5hbWUpICYmICEvXltpdV1bMC05XSskL3UudGVzdChuYW1lKSAmJlxuICAgICFuYW1lLnN0YXJ0c1dpdGgoXCJzZW1hbnRpZm9sZF9cIilcbn1cblxuLyoqXG4gKiBQcm90ZWN0cyBTd2lmdCBrZXl3b3Jkcywgc2NhbGFyIG5hbWVzLCBlbnRyeSBwbHVtYmluZywgYW5kIHRhcmdldC1vbmx5IGhlbHBlciBuYW1lcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQ2FsbGVyLW93bmVkIGZ1bmN0aW9uIG9yIGJpbmRpbmcgbmFtZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIG9yZGluYXJ5IHVuZXNjYXBlZCBTd2lmdCBzeW50YXggY2FuIHByZXNlcnZlIHRoZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTd2lmdElkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLnN3aWZ0LnRlc3QobmFtZSkgJiYgIXJlc2VydmVkV29yZHMuc3dpZnQuaGFzKG5hbWUpICYmICFuYW1lLnN0YXJ0c1dpdGgoXCJzZW1hbnRpZm9sZF9cIilcbn1cblxuLyoqXG4gKiBQcm90ZWN0cyBLb3RsaW4ga2V5d29yZHMsIEpWTSBzY2FsYXIvc2NhZmZvbGQgbmFtZXMsIGFuZCB0YXJnZXQtb25seSBoZWxwZXIgbmFtZXMuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIENhbGxlci1vd25lZCBmdW5jdGlvbiBvciBiaW5kaW5nIG5hbWUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBvcmRpbmFyeSB1bmVzY2FwZWQgS290bGluIHN5bnRheCBjYW4gcHJlc2VydmUgdGhlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0tvdGxpbklkZW50aWZpZXIobmFtZSkge1xuICByZXR1cm4gaWRlbnRpZmllclBhdHRlcm5zLmtvdGxpbi50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLmtvdGxpbi5oYXMobmFtZSkgJiYgIW5hbWUuc3RhcnRzV2l0aChcInNlbWFudGlmb2xkX1wiKSAmJlxuICAgICFuYW1lLnN0YXJ0c1dpdGgoXCJTRU1BTlRJRk9MRF9cIilcbn1cblxuLyoqXG4gKiBQcm90ZWN0cyBEYXJ0IGtleXdvcmRzLCBWTSBzY2FsYXIvc2NhZmZvbGQgbmFtZXMsIGFuZCBjb21waWxlci1vd25lZCBoZWxwZXJzLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBDYWxsZXItb3duZWQgZnVuY3Rpb24gb3IgYmluZGluZyBuYW1lLlxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgb3JkaW5hcnkgRGFydCBzeW50YXggY2FuIHByZXNlcnZlIHRoZSBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXJ0SWRlbnRpZmllcihuYW1lKSB7XG4gIHJldHVybiBpZGVudGlmaWVyUGF0dGVybnMuZGFydC50ZXN0KG5hbWUpICYmICFyZXNlcnZlZFdvcmRzLmRhcnQuaGFzKG5hbWUpICYmXG4gICAgIW5hbWUuc3RhcnRzV2l0aChcIl9zZW1hbnRpZm9sZFwiKSAmJiBuYW1lLm5vcm1hbGl6ZShcIk5GQ1wiKSA9PSBuYW1lXG59XG4iXX0=
|