typescript 5.2.0-dev.20230601 → 5.2.0-dev.20230603

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/lib/typescript.js CHANGED
@@ -35,7 +35,7 @@ var ts = (() => {
35
35
  "src/compiler/corePublic.ts"() {
36
36
  "use strict";
37
37
  versionMajorMinor = "5.2";
38
- version = `${versionMajorMinor}.0-dev.20230601`;
38
+ version = `${versionMajorMinor}.0-dev.20230603`;
39
39
  Comparison = /* @__PURE__ */ ((Comparison3) => {
40
40
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
41
41
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -7300,8 +7300,6 @@ ${lanes.join("\n")}
7300
7300
  Class_constructor_may_not_be_a_generator: diag(1368, 1 /* Error */, "Class_constructor_may_not_be_a_generator_1368", "Class constructor may not be a generator."),
7301
7301
  Did_you_mean_0: diag(1369, 3 /* Message */, "Did_you_mean_0_1369", "Did you mean '{0}'?"),
7302
7302
  This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set_to_error: diag(1371, 1 /* Error */, "This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set__1371", "This import is never used as a value and must use 'import type' because 'importsNotUsedAsValues' is set to 'error'."),
7303
- Convert_to_type_only_import: diag(1373, 3 /* Message */, "Convert_to_type_only_import_1373", "Convert to type-only import"),
7304
- Convert_all_imports_not_used_as_a_value_to_type_only_imports: diag(1374, 3 /* Message */, "Convert_all_imports_not_used_as_a_value_to_type_only_imports_1374", "Convert all imports not used as a value to type-only imports"),
7305
7303
  await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: diag(1375, 1 /* Error */, "await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_fi_1375", "'await' expressions are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."),
7306
7304
  _0_was_imported_here: diag(1376, 3 /* Message */, "_0_was_imported_here_1376", "'{0}' was imported here."),
7307
7305
  _0_was_exported_here: diag(1377, 3 /* Message */, "_0_was_exported_here_1377", "'{0}' was exported here."),
@@ -8507,6 +8505,8 @@ ${lanes.join("\n")}
8507
8505
  Resolved_under_condition_0: diag(6414, 3 /* Message */, "Resolved_under_condition_0_6414", "Resolved under condition '{0}'."),
8508
8506
  Failed_to_resolve_under_condition_0: diag(6415, 3 /* Message */, "Failed_to_resolve_under_condition_0_6415", "Failed to resolve under condition '{0}'."),
8509
8507
  Exiting_conditional_exports: diag(6416, 3 /* Message */, "Exiting_conditional_exports_6416", "Exiting conditional exports."),
8508
+ Searching_all_ancestor_node_modules_directories_for_preferred_extensions_Colon_0: diag(6417, 3 /* Message */, "Searching_all_ancestor_node_modules_directories_for_preferred_extensions_Colon_0_6417", "Searching all ancestor node_modules directories for preferred extensions: {0}."),
8509
+ Searching_all_ancestor_node_modules_directories_for_fallback_extensions_Colon_0: diag(6418, 3 /* Message */, "Searching_all_ancestor_node_modules_directories_for_fallback_extensions_Colon_0_6418", "Searching all ancestor node_modules directories for fallback extensions: {0}."),
8510
8510
  The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1: diag(6500, 3 /* Message */, "The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1_6500", "The expected type comes from property '{0}' which is declared here on type '{1}'"),
8511
8511
  The_expected_type_comes_from_this_index_signature: diag(6501, 3 /* Message */, "The_expected_type_comes_from_this_index_signature_6501", "The expected type comes from this index signature."),
8512
8512
  The_expected_type_comes_from_the_return_type_of_this_signature: diag(6502, 3 /* Message */, "The_expected_type_comes_from_the_return_type_of_this_signature_6502", "The expected type comes from the return type of this signature."),
@@ -9019,6 +9019,9 @@ ${lanes.join("\n")}
9019
9019
  Convert_all_typedef_to_TypeScript_types: diag(95177, 3 /* Message */, "Convert_all_typedef_to_TypeScript_types_95177", "Convert all typedef to TypeScript types."),
9020
9020
  Move_to_file: diag(95178, 3 /* Message */, "Move_to_file_95178", "Move to file"),
9021
9021
  Cannot_move_to_file_selected_file_is_invalid: diag(95179, 3 /* Message */, "Cannot_move_to_file_selected_file_is_invalid_95179", "Cannot move to file, selected file is invalid"),
9022
+ Use_import_type: diag(95180, 3 /* Message */, "Use_import_type_95180", "Use 'import type'"),
9023
+ Use_type_0: diag(95181, 3 /* Message */, "Use_type_0_95181", "Use 'type {0}'"),
9024
+ Fix_all_with_type_only_imports: diag(95182, 3 /* Message */, "Fix_all_with_type_only_imports_95182", "Fix all with type-only imports"),
9022
9025
  No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer: diag(18004, 1 /* Error */, "No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer_18004", "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer."),
9023
9026
  Classes_may_not_have_a_field_named_constructor: diag(18006, 1 /* Error */, "Classes_may_not_have_a_field_named_constructor_18006", "Classes may not have a field named 'constructor'."),
9024
9027
  JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array: diag(18007, 1 /* Error */, "JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array_18007", "JSX expressions may not use the comma operator. Did you mean to write an array?"),
@@ -40948,11 +40951,13 @@ ${lanes.join("\n")}
40948
40951
  const priorityExtensions = extensions & (1 /* TypeScript */ | 4 /* Declaration */);
40949
40952
  const secondaryExtensions = extensions & ~(1 /* TypeScript */ | 4 /* Declaration */);
40950
40953
  if (priorityExtensions) {
40954
+ traceIfEnabled(state, Diagnostics.Searching_all_ancestor_node_modules_directories_for_preferred_extensions_Colon_0, formatExtensions(priorityExtensions));
40951
40955
  const result = lookup(priorityExtensions);
40952
40956
  if (result)
40953
40957
  return result;
40954
40958
  }
40955
40959
  if (secondaryExtensions && !typesScopeOnly) {
40960
+ traceIfEnabled(state, Diagnostics.Searching_all_ancestor_node_modules_directories_for_fallback_extensions_Colon_0, formatExtensions(secondaryExtensions));
40956
40961
  return lookup(secondaryExtensions);
40957
40962
  }
40958
40963
  function lookup(extensions2) {
@@ -67155,6 +67160,8 @@ ${lanes.join("\n")}
67155
67160
  }
67156
67161
  function isConstantReference(node) {
67157
67162
  switch (node.kind) {
67163
+ case 110 /* ThisKeyword */:
67164
+ return true;
67158
67165
  case 80 /* Identifier */:
67159
67166
  if (!isThisInTypeQuery(node)) {
67160
67167
  const symbol = getResolvedSymbol(node);
@@ -98247,7 +98254,7 @@ ${lanes.join("\n")}
98247
98254
  continue;
98248
98255
  }
98249
98256
  finishObjectLiteralIfNeeded();
98250
- expressions.push(attr.expression);
98257
+ expressions.push(Debug.checkDefined(visitNode(attr.expression, visitor, isExpression)));
98251
98258
  continue;
98252
98259
  }
98253
98260
  properties.push(transformJsxAttributeToObjectLiteralElement(attr));
@@ -146360,7 +146367,27 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
146360
146367
  const { parent: parent2 } = getTokenAtPosition(sourceFile, pos);
146361
146368
  return isImportSpecifier(parent2) || isImportDeclaration(parent2) && parent2.importClause ? parent2 : void 0;
146362
146369
  }
146370
+ function canConvertImportDeclarationForSpecifier(specifier, sourceFile, program) {
146371
+ if (specifier.parent.parent.name) {
146372
+ return false;
146373
+ }
146374
+ const nonTypeOnlySpecifiers = specifier.parent.elements.filter((e) => !e.isTypeOnly);
146375
+ if (nonTypeOnlySpecifiers.length === 1) {
146376
+ return true;
146377
+ }
146378
+ const checker = program.getTypeChecker();
146379
+ for (const specifier2 of nonTypeOnlySpecifiers) {
146380
+ const isUsedAsValue = ts_FindAllReferences_exports.Core.eachSymbolReferenceInFile(specifier2.name, checker, sourceFile, (usage) => {
146381
+ return !isValidTypeOnlyAliasUseSite(usage);
146382
+ });
146383
+ if (isUsedAsValue) {
146384
+ return false;
146385
+ }
146386
+ }
146387
+ return true;
146388
+ }
146363
146389
  function doChange11(changes, sourceFile, declaration) {
146390
+ var _a;
146364
146391
  if (isImportSpecifier(declaration)) {
146365
146392
  changes.replaceNode(sourceFile, declaration, factory.updateImportSpecifier(
146366
146393
  declaration,
@@ -146431,6 +146458,16 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
146431
146458
  )
146432
146459
  ]);
146433
146460
  } else {
146461
+ const newNamedBindings = ((_a = importClause.namedBindings) == null ? void 0 : _a.kind) === 274 /* NamedImports */ ? factory.updateNamedImports(
146462
+ importClause.namedBindings,
146463
+ sameMap(importClause.namedBindings.elements, (e) => factory.updateImportSpecifier(
146464
+ e,
146465
+ /*isTypeOnly*/
146466
+ false,
146467
+ e.propertyName,
146468
+ e.name
146469
+ ))
146470
+ ) : importClause.namedBindings;
146434
146471
  const importDeclaration = factory.updateImportDeclaration(
146435
146472
  declaration,
146436
146473
  declaration.modifiers,
@@ -146439,7 +146476,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
146439
146476
  /*isTypeOnly*/
146440
146477
  true,
146441
146478
  importClause.name,
146442
- importClause.namedBindings
146479
+ newNamedBindings
146443
146480
  ),
146444
146481
  declaration.moduleSpecifier,
146445
146482
  declaration.assertClause
@@ -146462,19 +146499,41 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
146462
146499
  registerCodeFix({
146463
146500
  errorCodes: errorCodes14,
146464
146501
  getCodeActions: function getCodeActionsToConvertToTypeOnlyImport(context) {
146502
+ var _a;
146465
146503
  const declaration = getDeclaration2(context.sourceFile, context.span.start);
146466
146504
  if (declaration) {
146467
146505
  const changes = ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange11(t, context.sourceFile, declaration));
146468
- return [createCodeFixAction(fixId13, changes, Diagnostics.Convert_to_type_only_import, fixId13, Diagnostics.Convert_all_imports_not_used_as_a_value_to_type_only_imports)];
146506
+ const importDeclarationChanges = declaration.kind === 275 /* ImportSpecifier */ && canConvertImportDeclarationForSpecifier(declaration, context.sourceFile, context.program) ? ts_textChanges_exports.ChangeTracker.with(context, (t) => doChange11(t, context.sourceFile, declaration.parent.parent.parent)) : void 0;
146507
+ const mainAction = createCodeFixAction(
146508
+ fixId13,
146509
+ changes,
146510
+ declaration.kind === 275 /* ImportSpecifier */ ? [Diagnostics.Use_type_0, ((_a = declaration.propertyName) == null ? void 0 : _a.text) ?? declaration.name.text] : Diagnostics.Use_import_type,
146511
+ fixId13,
146512
+ Diagnostics.Fix_all_with_type_only_imports
146513
+ );
146514
+ if (some(importDeclarationChanges)) {
146515
+ return [
146516
+ createCodeFixActionWithoutFixAll(fixId13, importDeclarationChanges, Diagnostics.Use_import_type),
146517
+ mainAction
146518
+ ];
146519
+ }
146520
+ return [mainAction];
146469
146521
  }
146470
146522
  return void 0;
146471
146523
  },
146472
146524
  fixIds: [fixId13],
146473
146525
  getAllCodeActions: function getAllCodeActionsToConvertToTypeOnlyImport(context) {
146526
+ const fixedImportDeclarations = /* @__PURE__ */ new Set();
146474
146527
  return codeFixAll(context, errorCodes14, (changes, diag2) => {
146475
- const declaration = getDeclaration2(diag2.file, diag2.start);
146476
- if (declaration) {
146477
- doChange11(changes, diag2.file, declaration);
146528
+ const errorDeclaration = getDeclaration2(diag2.file, diag2.start);
146529
+ if ((errorDeclaration == null ? void 0 : errorDeclaration.kind) === 271 /* ImportDeclaration */ && !fixedImportDeclarations.has(errorDeclaration)) {
146530
+ doChange11(changes, diag2.file, errorDeclaration);
146531
+ fixedImportDeclarations.add(errorDeclaration);
146532
+ } else if ((errorDeclaration == null ? void 0 : errorDeclaration.kind) === 275 /* ImportSpecifier */ && !fixedImportDeclarations.has(errorDeclaration.parent.parent.parent) && canConvertImportDeclarationForSpecifier(errorDeclaration, diag2.file, context.program)) {
146533
+ doChange11(changes, diag2.file, errorDeclaration.parent.parent.parent);
146534
+ fixedImportDeclarations.add(errorDeclaration.parent.parent.parent);
146535
+ } else if ((errorDeclaration == null ? void 0 : errorDeclaration.kind) === 275 /* ImportSpecifier */) {
146536
+ doChange11(changes, diag2.file, errorDeclaration);
146478
146537
  }
146479
146538
  });
146480
146539
  }
@@ -150404,7 +150463,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
150404
150463
  actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, namespaceChanges, Diagnostics.Convert_named_imports_to_namespace_import));
150405
150464
  }
150406
150465
  if (typeOnlyChanges.length) {
150407
- actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, typeOnlyChanges, Diagnostics.Convert_to_type_only_import));
150466
+ actions2 = append(actions2, createCodeFixActionWithoutFixAll(fixId32, typeOnlyChanges, Diagnostics.Use_import_type));
150408
150467
  }
150409
150468
  return actions2;
150410
150469
  },
@@ -158611,7 +158670,7 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
158611
158670
  }
158612
158671
  const keys = getOwnKeys(exports);
158613
158672
  const fragmentSubpath = components.join("/") + (components.length && hasTrailingDirectorySeparator(fragment) ? "/" : "");
158614
- const conditions = mode === 99 /* ESNext */ ? ["node", "import", "types"] : ["node", "require", "types"];
158673
+ const conditions = getConditions(compilerOptions, mode === 99 /* ESNext */);
158615
158674
  addCompletionEntriesFromPathsOrExports(
158616
158675
  result,
158617
158676
  fragmentSubpath,
@@ -54,7 +54,7 @@ var path = __toESM(require("path"));
54
54
 
55
55
  // src/compiler/corePublic.ts
56
56
  var versionMajorMinor = "5.2";
57
- var version = `${versionMajorMinor}.0-dev.20230601`;
57
+ var version = `${versionMajorMinor}.0-dev.20230603`;
58
58
 
59
59
  // src/compiler/core.ts
60
60
  var emptyArray = [];
@@ -5360,8 +5360,6 @@ var Diagnostics = {
5360
5360
  Class_constructor_may_not_be_a_generator: diag(1368, 1 /* Error */, "Class_constructor_may_not_be_a_generator_1368", "Class constructor may not be a generator."),
5361
5361
  Did_you_mean_0: diag(1369, 3 /* Message */, "Did_you_mean_0_1369", "Did you mean '{0}'?"),
5362
5362
  This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set_to_error: diag(1371, 1 /* Error */, "This_import_is_never_used_as_a_value_and_must_use_import_type_because_importsNotUsedAsValues_is_set__1371", "This import is never used as a value and must use 'import type' because 'importsNotUsedAsValues' is set to 'error'."),
5363
- Convert_to_type_only_import: diag(1373, 3 /* Message */, "Convert_to_type_only_import_1373", "Convert to type-only import"),
5364
- Convert_all_imports_not_used_as_a_value_to_type_only_imports: diag(1374, 3 /* Message */, "Convert_all_imports_not_used_as_a_value_to_type_only_imports_1374", "Convert all imports not used as a value to type-only imports"),
5365
5363
  await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_file_has_no_imports_or_exports_Consider_adding_an_empty_export_to_make_this_file_a_module: diag(1375, 1 /* Error */, "await_expressions_are_only_allowed_at_the_top_level_of_a_file_when_that_file_is_a_module_but_this_fi_1375", "'await' expressions are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module."),
5366
5364
  _0_was_imported_here: diag(1376, 3 /* Message */, "_0_was_imported_here_1376", "'{0}' was imported here."),
5367
5365
  _0_was_exported_here: diag(1377, 3 /* Message */, "_0_was_exported_here_1377", "'{0}' was exported here."),
@@ -6567,6 +6565,8 @@ var Diagnostics = {
6567
6565
  Resolved_under_condition_0: diag(6414, 3 /* Message */, "Resolved_under_condition_0_6414", "Resolved under condition '{0}'."),
6568
6566
  Failed_to_resolve_under_condition_0: diag(6415, 3 /* Message */, "Failed_to_resolve_under_condition_0_6415", "Failed to resolve under condition '{0}'."),
6569
6567
  Exiting_conditional_exports: diag(6416, 3 /* Message */, "Exiting_conditional_exports_6416", "Exiting conditional exports."),
6568
+ Searching_all_ancestor_node_modules_directories_for_preferred_extensions_Colon_0: diag(6417, 3 /* Message */, "Searching_all_ancestor_node_modules_directories_for_preferred_extensions_Colon_0_6417", "Searching all ancestor node_modules directories for preferred extensions: {0}."),
6569
+ Searching_all_ancestor_node_modules_directories_for_fallback_extensions_Colon_0: diag(6418, 3 /* Message */, "Searching_all_ancestor_node_modules_directories_for_fallback_extensions_Colon_0_6418", "Searching all ancestor node_modules directories for fallback extensions: {0}."),
6570
6570
  The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1: diag(6500, 3 /* Message */, "The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1_6500", "The expected type comes from property '{0}' which is declared here on type '{1}'"),
6571
6571
  The_expected_type_comes_from_this_index_signature: diag(6501, 3 /* Message */, "The_expected_type_comes_from_this_index_signature_6501", "The expected type comes from this index signature."),
6572
6572
  The_expected_type_comes_from_the_return_type_of_this_signature: diag(6502, 3 /* Message */, "The_expected_type_comes_from_the_return_type_of_this_signature_6502", "The expected type comes from the return type of this signature."),
@@ -7079,6 +7079,9 @@ var Diagnostics = {
7079
7079
  Convert_all_typedef_to_TypeScript_types: diag(95177, 3 /* Message */, "Convert_all_typedef_to_TypeScript_types_95177", "Convert all typedef to TypeScript types."),
7080
7080
  Move_to_file: diag(95178, 3 /* Message */, "Move_to_file_95178", "Move to file"),
7081
7081
  Cannot_move_to_file_selected_file_is_invalid: diag(95179, 3 /* Message */, "Cannot_move_to_file_selected_file_is_invalid_95179", "Cannot move to file, selected file is invalid"),
7082
+ Use_import_type: diag(95180, 3 /* Message */, "Use_import_type_95180", "Use 'import type'"),
7083
+ Use_type_0: diag(95181, 3 /* Message */, "Use_type_0_95181", "Use 'type {0}'"),
7084
+ Fix_all_with_type_only_imports: diag(95182, 3 /* Message */, "Fix_all_with_type_only_imports_95182", "Fix all with type-only imports"),
7082
7085
  No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer: diag(18004, 1 /* Error */, "No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer_18004", "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer."),
7083
7086
  Classes_may_not_have_a_field_named_constructor: diag(18006, 1 /* Error */, "Classes_may_not_have_a_field_named_constructor_18006", "Classes may not have a field named 'constructor'."),
7084
7087
  JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array: diag(18007, 1 /* Error */, "JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array_18007", "JSX expressions may not use the comma operator. Did you mean to write an array?"),
@@ -28534,11 +28537,13 @@ function loadModuleFromNearestNodeModulesDirectoryWorker(extensions, moduleName,
28534
28537
  const priorityExtensions = extensions & (1 /* TypeScript */ | 4 /* Declaration */);
28535
28538
  const secondaryExtensions = extensions & ~(1 /* TypeScript */ | 4 /* Declaration */);
28536
28539
  if (priorityExtensions) {
28540
+ traceIfEnabled(state, Diagnostics.Searching_all_ancestor_node_modules_directories_for_preferred_extensions_Colon_0, formatExtensions(priorityExtensions));
28537
28541
  const result = lookup(priorityExtensions);
28538
28542
  if (result)
28539
28543
  return result;
28540
28544
  }
28541
28545
  if (secondaryExtensions && !typesScopeOnly) {
28546
+ traceIfEnabled(state, Diagnostics.Searching_all_ancestor_node_modules_directories_for_fallback_extensions_Colon_0, formatExtensions(secondaryExtensions));
28542
28547
  return lookup(secondaryExtensions);
28543
28548
  }
28544
28549
  function lookup(extensions2) {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "typescript",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "5.2.0-dev.20230601",
5
+ "version": "5.2.0-dev.20230603",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [
@@ -55,6 +55,7 @@
55
55
  "@typescript-eslint/parser": "^5.33.1",
56
56
  "@typescript-eslint/utils": "^5.33.1",
57
57
  "azure-devops-node-api": "^12.0.0",
58
+ "c8": "^7.14.0",
58
59
  "chai": "^4.3.7",
59
60
  "chalk": "^4.1.2",
60
61
  "chokidar": "^3.5.3",
@@ -113,5 +114,5 @@
113
114
  "node": "20.1.0",
114
115
  "npm": "8.19.4"
115
116
  },
116
- "gitHead": "4c01b2f9ee6e65ff9a39e836a99b0b4959bce5fb"
117
+ "gitHead": "cbda2fcce95d7ac82841cee631f07b73be07c0f0"
117
118
  }