@zzzen/pyright-internal 1.2.0-dev.20230319 → 1.2.0-dev.20230402

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.
Files changed (142) hide show
  1. package/dist/analyzer/cacheManager.js +1 -1
  2. package/dist/analyzer/checker.js +52 -26
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/constraintSolver.js +4 -1
  5. package/dist/analyzer/constraintSolver.js.map +1 -1
  6. package/dist/analyzer/constructorTransform.js +4 -3
  7. package/dist/analyzer/constructorTransform.js.map +1 -1
  8. package/dist/analyzer/dataClasses.js +10 -0
  9. package/dist/analyzer/dataClasses.js.map +1 -1
  10. package/dist/analyzer/declarationUtils.d.ts +8 -0
  11. package/dist/analyzer/declarationUtils.js +147 -1
  12. package/dist/analyzer/declarationUtils.js.map +1 -1
  13. package/dist/analyzer/importStatementUtils.js +1 -1
  14. package/dist/analyzer/parameterUtils.d.ts +25 -1
  15. package/dist/analyzer/parameterUtils.js +182 -1
  16. package/dist/analyzer/parameterUtils.js.map +1 -1
  17. package/dist/analyzer/patternMatching.js +55 -5
  18. package/dist/analyzer/patternMatching.js.map +1 -1
  19. package/dist/analyzer/program.js +40 -26
  20. package/dist/analyzer/program.js.map +1 -1
  21. package/dist/analyzer/properties.js +13 -13
  22. package/dist/analyzer/properties.js.map +1 -1
  23. package/dist/analyzer/protocols.js +21 -5
  24. package/dist/analyzer/protocols.js.map +1 -1
  25. package/dist/analyzer/pythonPathUtils.js +1 -1
  26. package/dist/analyzer/regions.js +4 -4
  27. package/dist/analyzer/regions.js.map +1 -1
  28. package/dist/analyzer/service.js +16 -22
  29. package/dist/analyzer/service.js.map +1 -1
  30. package/dist/analyzer/sourceFile.js +1 -1
  31. package/dist/analyzer/sourceFileInfoUtils.js +1 -1
  32. package/dist/analyzer/sourceMapper.js +1 -1
  33. package/dist/analyzer/sourceMapperUtils.d.ts +0 -8
  34. package/dist/analyzer/sourceMapperUtils.js +18 -25
  35. package/dist/analyzer/sourceMapperUtils.js.map +1 -1
  36. package/dist/analyzer/staticExpressions.js +2 -2
  37. package/dist/analyzer/symbolUtils.js +1 -1
  38. package/dist/analyzer/testWalker.js +3 -0
  39. package/dist/analyzer/testWalker.js.map +1 -1
  40. package/dist/analyzer/tracePrinter.js +1 -1
  41. package/dist/analyzer/typeEvaluator.js +187 -87
  42. package/dist/analyzer/typeEvaluator.js.map +1 -1
  43. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -3
  44. package/dist/analyzer/typeEvaluatorTypes.js +0 -1
  45. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  46. package/dist/analyzer/typeEvaluatorWithTracker.js +3 -5
  47. package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
  48. package/dist/analyzer/typeGuards.js +182 -159
  49. package/dist/analyzer/typeGuards.js.map +1 -1
  50. package/dist/analyzer/typeUtils.d.ts +2 -25
  51. package/dist/analyzer/typeUtils.js +59 -188
  52. package/dist/analyzer/typeUtils.js.map +1 -1
  53. package/dist/analyzer/typeVarContext.js +6 -2
  54. package/dist/analyzer/typeVarContext.js.map +1 -1
  55. package/dist/analyzer/typedDicts.js +2 -1
  56. package/dist/analyzer/typedDicts.js.map +1 -1
  57. package/dist/analyzer/types.d.ts +1 -0
  58. package/dist/analyzer/types.js.map +1 -1
  59. package/dist/common/configOptions.js +1 -1
  60. package/dist/common/configOptions.js.map +1 -1
  61. package/dist/common/diagnosticSink.js +1 -1
  62. package/dist/common/envVarUtils.js +7 -7
  63. package/dist/common/envVarUtils.js.map +1 -1
  64. package/dist/common/fileBasedCancellationUtils.js +5 -1
  65. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  66. package/dist/common/host.js +1 -1
  67. package/dist/common/lspUtils.js +1 -1
  68. package/dist/common/pathConsts.d.ts +1 -0
  69. package/dist/common/pathConsts.js +2 -1
  70. package/dist/common/pathConsts.js.map +1 -1
  71. package/dist/common/progressReporter.js +4 -1
  72. package/dist/common/progressReporter.js.map +1 -1
  73. package/dist/common/pythonVersion.js +1 -2
  74. package/dist/common/pythonVersion.js.map +1 -1
  75. package/dist/common/realFileSystem.js +1 -1
  76. package/dist/common/textEditTracker.js +1 -1
  77. package/dist/common/workspaceEditUtils.js +1 -1
  78. package/dist/languageServerBase.js +2 -2
  79. package/dist/languageServerBase.js.map +1 -1
  80. package/dist/languageService/analyzerServiceExecutor.js +2 -2
  81. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  82. package/dist/languageService/autoImporter.d.ts +1 -1
  83. package/dist/languageService/autoImporter.js +6 -3
  84. package/dist/languageService/autoImporter.js.map +1 -1
  85. package/dist/languageService/callHierarchyProvider.d.ts +7 -3
  86. package/dist/languageService/callHierarchyProvider.js +38 -6
  87. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  88. package/dist/languageService/completionProvider.d.ts +1 -0
  89. package/dist/languageService/completionProvider.js +30 -11
  90. package/dist/languageService/completionProvider.js.map +1 -1
  91. package/dist/languageService/completionProviderUtils.js +2 -2
  92. package/dist/languageService/completionProviderUtils.js.map +1 -1
  93. package/dist/languageService/documentSymbolProvider.js +1 -2
  94. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  95. package/dist/languageService/hoverProvider.js +1 -1
  96. package/dist/languageService/hoverProvider.js.map +1 -1
  97. package/dist/languageService/importSorter.js +1 -1
  98. package/dist/languageService/indentationUtils.js +2 -1
  99. package/dist/languageService/indentationUtils.js.map +1 -1
  100. package/dist/languageService/signatureHelpProvider.js +9 -7
  101. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  102. package/dist/languageService/tooltipUtils.js +2 -2
  103. package/dist/localization/localize.d.ts +0 -3
  104. package/dist/localization/localize.js +0 -1
  105. package/dist/localization/localize.js.map +1 -1
  106. package/dist/localization/package.nls.en-us.json +0 -1
  107. package/dist/tests/checker.test.js +1 -1
  108. package/dist/tests/checker.test.js.map +1 -1
  109. package/dist/tests/completions.test.js +41 -0
  110. package/dist/tests/completions.test.js.map +1 -1
  111. package/dist/tests/fourslash/fourslash.d.ts +5 -0
  112. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.d.ts +1 -0
  113. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js +34 -0
  114. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedFunction.fourslash.js.map +1 -0
  115. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.d.ts +1 -0
  116. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js +19 -0
  117. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.aliasedVariable.fourslash.js.map +1 -0
  118. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.d.ts +1 -0
  119. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js +39 -0
  120. package/dist/tests/fourslash/showcallhierarchy.incomingCalls.function.fourslash.js.map +1 -0
  121. package/dist/tests/harness/fourslash/testState.d.ts +5 -0
  122. package/dist/tests/harness/fourslash/testState.js +21 -0
  123. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  124. package/dist/tests/hoverProvider.test.js +50 -0
  125. package/dist/tests/hoverProvider.test.js.map +1 -1
  126. package/dist/tests/typeEvaluator1.test.js +8 -0
  127. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  128. package/dist/tests/typeEvaluator2.test.js +13 -1
  129. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  130. package/dist/tests/typeEvaluator3.test.js +9 -1
  131. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  132. package/dist/tests/typeEvaluator4.test.js +48 -116
  133. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  134. package/dist/tests/typeEvaluator5.test.js +1 -5
  135. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  136. package/dist/workspaceFactory.d.ts +1 -0
  137. package/dist/workspaceFactory.js +20 -10
  138. package/dist/workspaceFactory.js.map +1 -1
  139. package/package.json +1 -1
  140. package/dist/analyzer/aliasDeclarationUtils.d.ts +0 -9
  141. package/dist/analyzer/aliasDeclarationUtils.js +0 -142
  142. package/dist/analyzer/aliasDeclarationUtils.js.map +0 -1
@@ -4,10 +4,10 @@ import { ConsoleInterface } from '../common/console';
4
4
  import { Diagnostic, DiagnosticAddendum } from '../common/diagnostic';
5
5
  import { TextRange } from '../common/textRange';
6
6
  import { ArgumentCategory, ArgumentNode, CallNode, CaseNode, ClassNode, ExpressionNode, FunctionNode, MatchNode, NameNode, ParameterCategory, ParameterNode, ParseNode, RaiseNode, StringNode } from '../parser/parseNodes';
7
- import * as DeclarationUtils from './aliasDeclarationUtils';
8
7
  import { AnalyzerFileInfo } from './analyzerFileInfo';
9
8
  import { CodeFlowReferenceExpressionNode, FlowNode } from './codeFlowTypes';
10
9
  import { Declaration } from './declaration';
10
+ import * as DeclarationUtils from './declarationUtils';
11
11
  import { SymbolWithScope } from './scope';
12
12
  import { Symbol } from './symbol';
13
13
  import { PrintTypeFlags } from './typePrinter';
@@ -62,7 +62,7 @@ export interface TypeResultWithNode extends TypeResult {
62
62
  }
63
63
  export interface EvaluatorUsage {
64
64
  method: 'get' | 'set' | 'del';
65
- setType?: Type | undefined;
65
+ setType?: TypeResult | undefined;
66
66
  setErrorNode?: ExpressionNode | undefined;
67
67
  setExpectedTypeDiag?: DiagnosticAddendum | undefined;
68
68
  }
@@ -214,7 +214,7 @@ export interface TypeEvaluator {
214
214
  getTypeOfArgument: (arg: FunctionArgument) => TypeResult;
215
215
  markNamesAccessed: (node: ParseNode, names: string[]) => void;
216
216
  getScopeIdForNode: (node: ParseNode) => string;
217
- makeTopLevelTypeVarsConcrete: (type: Type) => Type;
217
+ makeTopLevelTypeVarsConcrete: (type: Type, makeParamSpecsConcrete?: boolean) => Type;
218
218
  mapSubtypesExpandTypeVars: (type: Type, conditionFilter: TypeCondition[] | undefined, callback: (expandedSubtype: Type, unexpandedSubtype: Type) => Type | undefined) => Type;
219
219
  lookUpSymbolRecursive: (node: ParseNode, name: string, honorCodeFlow: boolean) => SymbolWithScope | undefined;
220
220
  getDeclaredTypeOfSymbol: (symbol: Symbol) => DeclaredSymbolTypeInfo;
@@ -6,7 +6,6 @@
6
6
  * Author: Eric Traut
7
7
  *
8
8
  * Abstract interface and other helper types for type evaluator module.
9
- *
10
9
  */
11
10
  Object.defineProperty(exports, "__esModule", { value: true });
12
11
  exports.EvaluatorFlags = exports.maxSubtypesForInferredType = void 0;
@@ -1 +1 @@
1
- {"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA4CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,cAsFjB;AAtFD,WAAkB,cAAc;IAC5B,mDAAQ,CAAA;IAER,uDAAuD;IACvD,mFAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yEAAwB,CAAA;IAExB,yDAAyD;IACzD,uFAA+B,CAAA;IAE/B,kCAAkC;IAClC,iGAAoC,CAAA;IAEpC,0CAA0C;IAC1C,sEAAsB,CAAA;IAEtB,6CAA6C;IAC7C,8EAA0B,CAAA;IAE1B,gDAAgD;IAChD,oFAA6B,CAAA;IAE7B,qDAAqD;IACrD,4BAA4B;IAC5B,uEAAsB,CAAA;IAEtB,gEAAgE;IAChE,6DAA6D;IAC7D,qBAAqB;IACrB,2FAAgC,CAAA;IAEhC,2DAA2D;IAC3D,6FAAiC,CAAA;IAEjC,2DAA2D;IAC3D,gDAAgD;IAChD,wFAA+B,CAAA;IAE/B,8DAA8D;IAC9D,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,0DAA0D;IAC1D,0BAA0B;IAC1B,0GAAwC,CAAA;IAExC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,gHAA2C,CAAA;IAE3C,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,iHAA2C,CAAA;IAE3C,mDAAmD;IACnD,2FAAgC,CAAA;IAEhC,6CAA6C;IAC7C,gFAA0B,CAAA;IAE1B,mEAAmE;IACnE,wFAA8B,CAAA;IAE9B,iEAAiE;IACjE,iCAAiC;IACjC,4FAAgC,CAAA;IAEhC,wDAAwD;IACxD,2EAAuB,CAAA;IAEvB,uDAAuD;IACvD,iHAA0C,CAAA;IAE1C,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6GAAwC,CAAA;IAExC,yCAAyC;IACzC,6FAAgC,CAAA;AACpC,CAAC,EAtFiB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAsF/B"}
1
+ {"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA4CH,gEAAgE;AAChE,kDAAkD;AACrC,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,IAAkB,cAsFjB;AAtFD,WAAkB,cAAc;IAC5B,mDAAQ,CAAA;IAER,uDAAuD;IACvD,mFAA6B,CAAA;IAE7B,0DAA0D;IAC1D,gEAAgE;IAChE,SAAS;IACT,yEAAwB,CAAA;IAExB,yDAAyD;IACzD,uFAA+B,CAAA;IAE/B,kCAAkC;IAClC,iGAAoC,CAAA;IAEpC,0CAA0C;IAC1C,sEAAsB,CAAA;IAEtB,6CAA6C;IAC7C,8EAA0B,CAAA;IAE1B,gDAAgD;IAChD,oFAA6B,CAAA;IAE7B,qDAAqD;IACrD,4BAA4B;IAC5B,uEAAsB,CAAA;IAEtB,gEAAgE;IAChE,6DAA6D;IAC7D,qBAAqB;IACrB,2FAAgC,CAAA;IAEhC,2DAA2D;IAC3D,6FAAiC,CAAA;IAEjC,2DAA2D;IAC3D,gDAAgD;IAChD,wFAA+B,CAAA;IAE/B,8DAA8D;IAC9D,0BAA0B;IAC1B,oGAAqC,CAAA;IAErC,0DAA0D;IAC1D,0BAA0B;IAC1B,0GAAwC,CAAA;IAExC,yDAAyD;IACzD,2DAA2D;IAC3D,mCAAmC;IACnC,gHAA2C,CAAA;IAE3C,yDAAyD;IACzD,6DAA6D;IAC7D,uDAAuD;IACvD,iHAA2C,CAAA;IAE3C,mDAAmD;IACnD,2FAAgC,CAAA;IAEhC,6CAA6C;IAC7C,gFAA0B,CAAA;IAE1B,mEAAmE;IACnE,wFAA8B,CAAA;IAE9B,iEAAiE;IACjE,iCAAiC;IACjC,4FAAgC,CAAA;IAEhC,wDAAwD;IACxD,2EAAuB,CAAA;IAEvB,uDAAuD;IACvD,iHAA0C,CAAA;IAE1C,6DAA6D;IAC7D,2DAA2D;IAC3D,oDAAoD;IACpD,6GAAwC,CAAA;IAExC,yCAAyC;IACzC,6FAAgC,CAAA;AACpC,CAAC,EAtFiB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAsF/B"}
@@ -6,9 +6,7 @@
6
6
  * Licensed under the MIT license.
7
7
  * Author: Eric Traut
8
8
  *
9
- * This wraps real type evaluator to track performance information such
10
- * as which type inferring takes most of time, what files are read most of times
11
- * and etc.
9
+ * Wraps type evaluator to track performance of internal calls.
12
10
  */
13
11
  Object.defineProperty(exports, "__esModule", { value: true });
14
12
  exports.createTypeEvaluatorWithTracker = void 0;
@@ -19,8 +17,8 @@ const typeEvaluator_1 = require("./typeEvaluator");
19
17
  // We don't want to track calls from the type evaluator itself, but only entry points.
20
18
  function createTypeEvaluatorWithTracker(importLookup, evaluatorOptions, logger, printer) {
21
19
  function wrapWithLogger(func) {
22
- // Only wrap the function if told to do so and the log level is high enough for it
23
- // to actually log something.
20
+ // Wrap the function only if told to do so and the log level is high
21
+ // enough for it to log something.
24
22
  if (evaluatorOptions.logCalls && logger.logLevel === console_1.LogLevel.Log) {
25
23
  return (...args) => {
26
24
  return logger.log(func.name, (s) => {
@@ -1 +1 @@
1
- {"version":3,"file":"typeEvaluatorWithTracker.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorWithTracker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,+CAA6C;AAC7C,yCAA6C;AAE7C,6CAA+C;AAG/C,mDAAwE;AAExE,sFAAsF;AACtF,SAAgB,8BAA8B,CAC1C,YAA0B,EAC1B,gBAAkC,EAClC,MAAkB,EAClB,OAAsB;IAEtB,SAAS,cAAc,CAAoC,IAAO;QAC9D,kFAAkF;QAClF,6BAA6B;QAC7B,IAAI,gBAAgB,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,kBAAQ,CAAC,GAAG,EAAE;YAC/D,OAAO,CAAC,GAAG,IAAmB,EAAiB,EAAE;gBAC7C,OAAO,MAAM,CAAC,GAAG,CACb,IAAI,CAAC,IAAI,EACT,CAAC,CAAC,EAAE,EAAE;oBACF,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;wBACjD,mDAAmD;wBACnD,CAAC,CAAC,GAAG,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClD;yBAAM;wBACH,wBAAwB;wBACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;4BACf,CAAC,CAAC,GAAG,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7B,CAAC,CAAC,CAAC;qBACN;oBACD,OAAO,oBAAW,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;gBACvE,CAAC,EACD,gBAAgB,CAAC,uBAAuB;gBACxC,oBAAoB,CAAC,IAAI,CAC5B,CAAC;YACN,CAAC,CAAC;SACL;aAAM,IAAI,CAAC,IAAA,kBAAW,GAAE,EAAE;YACvB,OAAO,oBAAW,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;SAClG;aAAM;YACH,OAAO,IAAI,CAAC;SACf;IACL,CAAC;IAED,sDAAsD;IACtD,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAA,mCAAmB,EAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACf,MAAM,KAAK,GAAI,SAAiB,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;YAC5B,SAAiB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;SACjD;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACrB,CAAC;AAhDD,wEAgDC"}
1
+ {"version":3,"file":"typeEvaluatorWithTracker.js","sourceRoot":"","sources":["../../../src/analyzer/typeEvaluatorWithTracker.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,+CAA6C;AAC7C,yCAA6C;AAE7C,6CAA+C;AAG/C,mDAAwE;AAExE,sFAAsF;AACtF,SAAgB,8BAA8B,CAC1C,YAA0B,EAC1B,gBAAkC,EAClC,MAAkB,EAClB,OAAsB;IAEtB,SAAS,cAAc,CAAoC,IAAO;QAC9D,oEAAoE;QACpE,kCAAkC;QAClC,IAAI,gBAAgB,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,kBAAQ,CAAC,GAAG,EAAE;YAC/D,OAAO,CAAC,GAAG,IAAmB,EAAiB,EAAE;gBAC7C,OAAO,MAAM,CAAC,GAAG,CACb,IAAI,CAAC,IAAI,EACT,CAAC,CAAC,EAAE,EAAE;oBACF,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;wBACjD,mDAAmD;wBACnD,CAAC,CAAC,GAAG,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClD;yBAAM;wBACH,wBAAwB;wBACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;4BACf,CAAC,CAAC,GAAG,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7B,CAAC,CAAC,CAAC;qBACN;oBACD,OAAO,oBAAW,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;gBACvE,CAAC,EACD,gBAAgB,CAAC,uBAAuB;gBACxC,oBAAoB,CAAC,IAAI,CAC5B,CAAC;YACN,CAAC,CAAC;SACL;aAAM,IAAI,CAAC,IAAA,kBAAW,GAAE,EAAE;YACvB,OAAO,oBAAW,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;SAClG;aAAM;YACH,OAAO,IAAI,CAAC;SACf;IACL,CAAC;IAED,sDAAsD;IACtD,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAA,mCAAmB,EAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACf,MAAM,KAAK,GAAI,SAAiB,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;YAC5B,SAAiB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;SACjD;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACrB,CAAC;AAhDD,wEAgDC"}