All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.javascript.jscomp.OptimizeParameters.class Maven / Gradle / Ivy

Go to download

Closure Compiler is a JavaScript optimizing compiler. It parses your JavaScript, analyzes it, removes dead code and rewrites and minimizes what's left. It also checks syntax, variable references, and types, and warns about common JavaScript pitfalls. It is used in many of Google's JavaScript apps, including Gmail, Google Web Search, Google Maps, and Google Docs.

The newest version!
????7?
java/lang/Object()V
	
$com/google/common/base/PreconditionscheckNotNull&(Ljava/lang/Object;)Ljava/lang/Object;-com/google/javascript/jscomp/AbstractCompiler	/com/google/javascript/jscomp/OptimizeParameterscompiler/Lcom/google/javascript/jscomp/AbstractCompiler;

getAstAnalyzer,()Lcom/google/javascript/jscomp/AstAnalyzer;	astAnalyzer*Lcom/google/javascript/jscomp/AstAnalyzer;

 getLifeCycleStage@()Lcom/google/javascript/jscomp/AbstractCompiler$LifeCycleStage;	"#$%&Lcom/google/javascript/jscomp/AbstractCompiler$LifeCycleStage;
()*
checkState(Z)V
,-./0*com/google/javascript/jscomp/OptimizeCallsbuilder6()Lcom/google/javascript/jscomp/OptimizeCalls$Builder;
234562com/google/javascript/jscomp/OptimizeCalls$BuildersetCompilere(Lcom/google/javascript/jscomp/AbstractCompiler;)Lcom/google/javascript/jscomp/OptimizeCalls$Builder;
289:setConsiderExterns7(Z)Lcom/google/javascript/jscomp/OptimizeCalls$Builder;
2<=>addPassx(Lcom/google/javascript/jscomp/OptimizeCalls$CallGraphCompilerPass;)Lcom/google/javascript/jscomp/OptimizeCalls$Builder;
2@ABbuild.()Lcom/google/javascript/jscomp/OptimizeCalls;
,DEFprocessG(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)V
HIJgetClass()Ljava/lang/Class;L
decisions.logNjava/lang/String

PQRcreateOrReopenIndexedLogi(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/String;)Lcom/google/javascript/jscomp/diagnostic/LogFile;	TUVdecisionsLog1Lcom/google/javascript/jscomp/diagnostic/LogFile;
XYZ[\7com/google/javascript/jscomp/OptimizeCalls$ReferenceMapgetGlobalScope&()Lcom/google/javascript/jscomp/Scope;	^_`globalScope$Lcom/google/javascript/jscomp/Scope;bjava/util/ArrayList
a
XefggetNameReferences()Ljava/lang/Iterable;ijklmjava/lang/Iterableiterator()Ljava/util/Iterator;opqrsjava/util/IteratorhasNext()Zouvwnext()Ljava/lang/Object;yjava/util/Map$Entryx{|wgetKeyx~wgetValue
???analyzeCandidateNamel(Ljava/lang/String;Ljava/util/ArrayList;)Lcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysis;
????sAcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysis#shouldConvertTaggedTemplateLiterals
???convertTaggedTemplateLiterals
???sisSafeToOptimize?????java/util/Listadd(Ljava/lang/Object;)Z
X??ggetPropReferences
???analyzeCandidateProperty?j
???tryEliminateOptionalArgs(Ljava/util/ArrayList;)V
???tryEliminateConstantArgs?Hcom/google/javascript/jscomp/OptimizeParameters$UnusedParameterOptimizer
???4(Lcom/google/javascript/jscomp/OptimizeParameters;)V
????tryEliminateUnusedArgs
???applyChanges
????/com/google/javascript/jscomp/diagnostic/LogFileclose?java/lang/Throwable
????
addSuppressed(Ljava/lang/Throwable;)V
????? com/google/javascript/rhino/Node	getParent$()Lcom/google/javascript/rhino/Node;
???sisRoot?name
???analyzeCandidate~(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;)Lcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysis;?property?Hcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysisBuilder
??
,???mayBeOptimizableNameD(Lcom/google/javascript/jscomp/AbstractCompiler;Ljava/lang/String;)Z?%s	%s	not an optimizable name
????logX(Ljava/lang/String;[Ljava/lang/Object;)Lcom/google/javascript/jscomp/diagnostic/LogFile;
????setIsSafeToOptimizeM(Z)Lcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysisBuilder;
??A?E()Lcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysis;
aj
X???!isNormalOrOptChainCallOrNewTarget%(Lcom/google/javascript/rhino/Node;)Z
???sisTaggedTemplateLit
????addTaggedTemplateLiteraln(Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysisBuilder;
???isCandidateDefinition
a?
,???isAllowedReference
???s	isLogging?"%s	%s	not an allowed reference: %s
????getLocation()Ljava/lang/String;
a??sisEmpty?%s	%s	no definition found	?taggedTemplateLiteralsLjava/util/ArrayList;
XgetFunctionNodesC(Ljava/util/List;)Lcom/google/common/collect/ImmutableListMultimap;
	
/com/google/common/collect/ImmutableListMultimapvalues1()Lcom/google/common/collect/ImmutableCollection;
l-com/google/common/collect/ImmutableCollection2()Lcom/google/common/collect/UnmodifiableIterator;
%com/google/javascript/jscomp/NodeUtilgetFunctionParametersF(Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
??
getFirstChild
?sisUnusedParameter?%s	%s	will not optimize parameters for tagged template literals!%s	%s	%s#Rfirst param is unused, so we will convert tagged template literals to normal calls%%s	%s	no usage found
?'(?getNext
*+,-.com/google/javascript/rhino/IRarraylitG([Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
?01srcref
?34?detach
678newCallNodei(Lcom/google/javascript/rhino/Node;[Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
?:;sisTemplateLitSub
?=>?getOnlyChild
?@ABaddChildToBack%(Lcom/google/javascript/rhino/Node;)V
?DEBreplaceWith

GHBreportChangeToEnclosingScope
?JKs
isFunction
MN?isFunctionDeclaration
XPQ?isSimpleAssignmentTarget
?ST?getLastChild
?VWsisName
?YZshasChildren
\]?isClassMemberDefinition
?_`sisClass
?bc?isFirstChildOf
ef?#allDefinitionsAreCandidateFunctions
?hisisMemberFunctionDef
?klsisClassMembers
nogetClassMembers
?qrsisMemberFieldDef
?tusisStaticMember
wxyz?(com/google/javascript/jscomp/AstAnalyzermayHaveSideEffects	|}~?1com/google/javascript/jscomp/OptimizeParameters$1,$SwitchMap$com$google$javascript$rhino$Token[I
????getToken%()Lcom/google/javascript/rhino/Token;
?????!com/google/javascript/rhino/Tokenordinal()I
???isNamedClassExpression
??'getEs6ClassConstructorMemberFunctionDef
???)classContainsClassFieldWithRHSSideEffects
???'doesFunctionReferenceOwnArgumentsObject
???mayReferenceParamBeforeBody
???isNamedFunctionExpression
????getSecondChild
?????+com/google/common/collect/ArrayListMultimapcreate/()Lcom/google/common/collect/ArrayListMultimap;???visit^(Lcom/google/common/collect/ArrayListMultimap;)Lcom/google/javascript/jscomp/NodeUtil$Visitor;
???visitPostOrderT(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/jscomp/NodeUtil$Visitor;)V
????asMap()Ljava/util/Map;????
java/util/Map()Ljava/util/Collection;?j?java/util/Collection????size
???isLValue
X??%getFirstArgumentForCallOrNewOrDotCall
???sisSpread
???eliminateParamsAfter&(Lcom/google/javascript/rhino/Node;I)V
???findFixedArguments'(Ljava/util/ArrayList;)Ljava/util/List;
?
?????#com/google/common/collect/IterablesgetOnlyElement((Ljava/lang/Iterable;)Ljava/lang/Object;
???adjustForConstraints5(Lcom/google/javascript/rhino/Node;Ljava/util/List;)Z
???alreadyRemoved
???optimizeCallSite5(Ljava/util/List;Lcom/google/javascript/rhino/Node;)V
???optimizeFunctionDefinition
???buildInitialParameterList5(Ljava/util/List;Lcom/google/javascript/rhino/Node;)Z
???findFixedParameters
???getBestJSDocInfoK(Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/JSDocInfo;
????s%com/google/javascript/rhino/JSDocInfo
isNoInline?java/lang/Integer???
????
getChildCount
???sisRest
????getPrevious???get(I)Ljava/lang/Object;9com/google/javascript/jscomp/OptimizeParameters$Parameter
?sisDefaultValue	
mayBeUndefinedZ	shouldRemove
scanBeSideEffected
shasSideEffects		
&(Lcom/google/javascript/rhino/Node;Z)V
 setParameterSideEffectInfo`(Lcom/google/javascript/jscomp/OptimizeParameters$Parameter;Lcom/google/javascript/rhino/Node;)V
"s
$%?getArg
?'(?isEquivalentTo
*+*setShouldRemove
-./isMovableValueI(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/jscomp/Scope;)Z
12*setHasSideEffects
4?
67*setCanBeSideEffected
9?
;<*setMayBeUndefined
?>??	getStringA	arguments
MCD?equals
FGHIJ"com/google/javascript/jscomp/ScopegetVar>(Ljava/lang/String;)Lcom/google/javascript/jscomp/AbstractVar;L com/google/javascript/jscomp/Var
?NO?removeFirstChild
QRSaddRestVariableToFunctioni(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)V
UVWXYjava/lang/Mathmin(II)I
[\]getArgumentForFunctionG(Lcom/google/javascript/rhino/Node;I)Lcom/google/javascript/rhino/Node;
_`S addVariableDeclarationToFunction
bcFaddExpressionToFunction
XefgetCallOrNewNodeForTarget
?hismayMutateArguments
?klsmayMutateGlobalStateOrThrow
no?eliminateCallTargetArgAt
qr?isImmutableValuet0com/google/javascript/rhino/Node$SideEffectFlags
?vw?getSideEffectFlags
syz(I)V
s|}~setMutatesGlobalState4()Lcom/google/javascript/rhino/Node$SideEffectFlags;
????setSideEffectFlags5(Lcom/google/javascript/rhino/Node$SideEffectFlags;)V?Value must be detached
?)?(ZLjava/lang/Object;)V?0formal parameter being declared must not be null?0formal parameter being declared must be detached
???sisDestructuringPattern
???rewriteDestructuringPatternW(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;Ljava/util/List;)V
???
newVarNodeh(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;)Lcom/google/javascript/rhino/Node;
???insertStatements5(Lcom/google/javascript/rhino/Node;Ljava/util/List;)V
*??
exprResult??
??getFunctionBody
??2getInsertionPointAfterAllInnerFunctionDeclarations
???addStatementsToBack
???addStatementsBefore
?????com/google/common/collect/Listsreverse"(Ljava/util/List;)Ljava/util/List;
???BinsertBefore
??F
??newUndefinedNode
*??var
???srcrefIfMissing
???s	hasParent?/Formal parameter must be detached for rewriting???accept/(Ljava/util/List;)Ljava/util/function/Consumer;
???#visitLhsNodesInDestructuringPatternB(Lcom/google/javascript/rhino/Node;Ljava/util/function/Consumer;)V
*???assign
X??] getArgumentForCallOrNewOrDotCall
???
deleteNodeT(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/jscomp/AbstractCompiler;)V?>lhs in destructuring declaration should be a simple name. (%s)
?)?((ZLjava/lang/String;Ljava/lang/Object;)V
*???6(Ljava/lang/String;)Lcom/google/javascript/rhino/Node;
????put'(Ljava/lang/Object;Ljava/lang/Object;)Z?)com/google/javascript/jscomp/CompilerPass?@com/google/javascript/jscomp/OptimizeCalls$CallGraphCompilerPassRuntimeVisibleTypeAnnotations#Lorg/jspecify/annotations/Nullable;2(Lcom/google/javascript/jscomp/AbstractCompiler;)VCodeLineNumberTableLocalVariableTablethis1Lcom/google/javascript/jscomp/OptimizeParameters;MethodParametersexterns"Lcom/google/javascript/rhino/Node;root
StackMapTable?(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;Lcom/google/javascript/jscomp/OptimizeCalls$ReferenceMap;)VkeyLjava/lang/String;refscandidateAnalysisCLcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysis;entryLjava/util/Map$Entry;
toOptimizeLjava/util/List;	optimizerJLcom/google/javascript/jscomp/OptimizeParameters$UnusedParameterOptimizer;refMap9Lcom/google/javascript/jscomp/OptimizeCalls$ReferenceMap;LocalVariableTypeTable9Ljava/util/ArrayList;bLjava/util/Map$Entry;>;KLjava/util/List;>;nparent	Signature?(Ljava/lang/String;Ljava/util/ArrayList;)Lcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysis;
firstParamfunctionNode
functionNodes/Lcom/google/common/collect/ImmutableCollection;refKindanalysisBuilderJLcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysisBuilder;definitionsseenCandidateUseSLcom/google/common/collect/ImmutableCollection;?(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;)Lcom/google/javascript/jscomp/OptimizeParameters$CandidateAnalysis;(convertTaggedTemplateLiteralToNormalCallargtlChildttlNodecalleetemplateLiteralfirstArgcallNodefunctionExprchild	classNodeclassMembersNodeconstructorMemberFunctionDefnamesLjava/util/Collection;function	paramListnamesByNames-Lcom/google/common/collect/ArrayListMultimap;:Ljava/util/Collection;cLcom/google/common/collect/ArrayListMultimap;cnumArgsIfnmaxArgs<(Ljava/util/ArrayList;)V
parametersfns1Lcom/google/common/collect/ImmutableListMultimap;continueLookingMLjava/util/List;wLcom/google/common/collect/ImmutableListMultimap;callfirstDotCallParamcur	firstCall?(Ljava/util/ArrayList;)Ljava/util/List;p;Lcom/google/javascript/jscomp/OptimizeParameters$Parameter;jcurrentiinfo'Lcom/google/javascript/rhino/JSDocInfo;
lastFormal	restIndexlastNonRestFormalformal
anyMovableseenUnmovableSideEffectsseenUnmoveableSideEffectedallRestValueRemovabler(Lcom/google/javascript/rhino/Node;Ljava/util/List;)Zvalueindexr(Ljava/util/List;Lcom/google/javascript/rhino/Node;)Zmovablev"Lcom/google/javascript/jscomp/Var;	parameterlhsformalParam	maybeRest
lastParameterr(Ljava/util/List;Lcom/google/javascript/rhino/Node;)VtargetcallMayMutateArgscallMayMutateGlobalsOrThrowstmts4Ljava/util/List;blockinsertionPointY(Lcom/google/javascript/rhino/Node;Ljava/util/List;)VstmtitemfnNodeargIndexformalArgPtrdestructuringPatternexpr{(Lcom/google/javascript/rhino/Node;Lcom/google/javascript/rhino/Node;Ljava/util/List;)VrefcallArgNode$lambda$rewriteDestructuringPattern$1newNamenewVar$lambda$mayReferenceParamBeforeBody$0R(Lcom/google/common/collect/ArrayListMultimap;Lcom/google/javascript/rhino/Node;)V
SourceFileOptimizeParameters.javaNestMembersBootstrapMethodsr
stuvw"java/lang/invoke/LambdaMetafactorymetafactory?(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;Bz
{kl}(Ljava/lang/Object;)V
?h?InnerClassesLifeCycleStageBuilderCallGraphCompilerPassReferenceMapEntryCandidateAnalysisUnusedParameterOptimizerCandidateAnalysisBuilder?-com/google/javascript/jscomp/NodeUtil$VisitorVisitor	ParameterSideEffectFlags?%java/lang/invoke/MethodHandles$Lookup?java/lang/invoke/MethodHandlesLookup ??_`UV??#??X*?*+??
?*+?????@AB????EF??0*???!???'?+*??1?7*?;??+,?C??"FHI J$K'L,M/N? 0??0??0???@?	??E????*?*?GK?M?O:*?S*-?W?]?aY?c:-?d?h:?n?S?t?x:?z?M:?}?a:	*	??:

???
??
???
	??W???-???h:?n?S?t?x:?z?M:?}?a:	*	??:

???
??
???
	??W?????:?n??t?a:*???????:?n??t?a:*??????Y*??:??:?n??t?a:????????&???:????:???*?S?
:*?S??|?????????????)RSUV!Y*[K\W]c^m_u`zb?c?e?g?h?i?j?k?l?n?o?q?????;?A?D?N?m?t?w?|??R????????????W5??c)?	m??
KA???5???)?	???
?A???;?m?*R??N.???UV???????????Rc)?	KA??)?	?A??;?m?*R????5??o?D??X??oxMa????X??o??
o?D??X??oxMa????X??o??o??o???o????X?????X????G?	?
???
???v *??L+?
+K*??L???*????????	???? ?????
@????Y	*?+,?İ??? 	??	??	?	??	?????Y	*?+,?İ??? 	??	??	?	??	?????5???Y*??:*?,?͚#*?S??Y+SY,S??W?׶۰?aY?c:6-??:?n???t??:?ߙ	6?j????????W?Q*????W?=??5*?S??!*?S??Y+SY,SY??S??W?׶۰??u???#*?S??Y+SY,S??W?׶۰????????:?
:?n?J?t??:		??:

?,
??$*?S?Y+SY,S??W?׶۰???*?S ?Y+SY,SY"S??W6?$*?S$?Y+SY,S??W?׶۰?׶۰??$?
??+?5?>?A?]?e?k?v????????????????????????
??/?9?F?]?gj??	?
??
?p]u?9.	?
/8
?	x????
??????
?>|Ay x??>|?5?5??ao?#?/?	?'?o?M??%?

??B?Fv+????M,?&N???)-?/:,?2W,??YS?5+?/:-?:?)?9??<:?2W???&:???+?C*??F??>BCDE"F5G;H@JHKOLUM\IfPlQuR?RO
?;+?v??v?k?f?Y?5A??"?;?????? ?	????+i+??M,?I?,?L?,N?N+?O?,?RN??+?U?+?X?+?N?)*+?[?+?N?,?^?+,?a?,N??*-?d??6
UXYZ['\5]=^E_M`\caech?\	?$?:?J?^?i??i?d?c???????]??V+?g?+???j????l?????@?????=+?mM,?N-?0-?p?!-?s?-?X?*?-??v??-?&N?????&	????(?1?3?;??*
1?=??=?8???
??(??f???Ͳ{+????.??-d????+????+??M,??*+????,?6+??:?n?`?t??:?ߙI??:?:?Ù	6?0??:	?*,	??6>?*,	??6??????,???N01
4
5)61788?;G<J=M?T@XCaDfGoItJwMzO?\	8?5??86?T#7?	)N??????}/?
{8
x2??}/3?G?a?o?9??????a?o?@???9??
???GL*??M,?,???*?N-?R:?6-??d6:????6????:66	6
6+??d6??+??:
? ??
?	?	
?
??:
?
?#	?
??
?
??	
?
?^?S
?
?Q66`6+???1+??:?
??6
??6	???ʧ	
?

?
?	6?
??6

??6	???????0\]^abc"d*e.f;g?hBiIrLsOtRuUvdwq{x|?}?????????????????????????????
????'?-?5?8?@?CvI????:;?9<+q?=;
_?>+L,?L/?G?@5$?/A?"*B+*"C+.D?LEO?F	R?G
U?HL/3?g???6???????
???????.??'?
?
?
??	,/I?????>6,?q+???!?Y,?:+??W*,??3+??:?!??#:,?&??)?>,?Ù?,?&M????+???+???)??????Z???	???(?2???G?N?W?`?b?i?l?q?t?w????????R:;NJ??5:;????/??7??E?K+?/3??,?-??	?
?	/7L????G>,?B,*?]?,6?Y,?:*,?+??W?>,?Ù?,?&M?????6
?????#?,?1?3?:?=?B?E??>2M&:;G??G/?G7?EEG/3???0	??	/7L ?{$+*?,?v?0+,?3?5,?Ú+,?8?:??????#?? $??$:;$J??#?	:J
./?+??{*????.?mGmmmmmmEEEEEEI??*?=@?B??+*?=?E?KM,???*?M,?,+?,??,?&M?????:?PR
Ta
cosux???? ?*oNO})????_`?	?P??
??	_????
B,?N-?R:+??d6??????-??d6+???+???u+???!?d???)?/:6+???1+??:		?!?'+???#???????2W?M:*,?P+??dd?T66?x+??:?!?],?Z:?(?2W???	???'?M:+???#:	?*,	?^?
*,	?a???????? $%&'"(**8+Q,_-n.{0?1?-?3?4?5?9?<?=?>???@?A?B?EFJ#L(M4R;<AV??{P;	c9>+_SJ??	Q?*?B+?RR?#J?	?bP;?z>+B??B/?B,?=$?7S?-T+B/3?F?Q???????8????@?@	? ????	/,U???]u,?dN-?g6-?j6+??d6?W+??:?!?<*,?m?0???#?#?p?6-?sY-?u?x?{????????BYZ[] ^-_5`<iCjPkYl\mbnkmn]tr?R-A:;YK+u??u/?uV?p5?jWdXu/3?$?????=???	/VURS?r,?????'*+,-?^??????*??#?Q?J??@?
#QJ`S??c-???????,?????,????????aY?c:,???*,-???,-????W*+????&	??!?3?<?C?N?[?b??4c??c#?cQ?cJ?<'Y?<'YZ?@
@@? ??
#QJcF???aY?cN-,??,?/??W*+-?????????*??#?J?Y?YZ?	#J????<,????+??N-??:?*-,???
*,??*?,????F??&	?	?
????#?*?;??4<??<#?<Y?-[?'\?<YZ?

????	#Y]????%,??N-?n?-?t??:+????????!?$??*^?%??%[?%Y?%YZ??o??	[Y]????(,????N-?n?-?t??:+????????$?'??*_?(??(\?(Y?(YZ??
o??	\Y]????"+??N?-?-?&N?????*+-?????????!??*"??"`?"a+b??	???	`a?F???,??*+,?&???aY?cN,?2W,???1,?&???',?M:???),?/:*+?^?X,??,?M:,?R?2:*+?^?6,???,??:*,-??*+-???-,??,????W*+-????V??
???!?0?6?C?L?V?\?e?n?x?~??????\	6Q?C	J?\Q?e	J?~J??Y?????`??D??YZ??,?@!!??	`D?????+???'+????¸?+-????+,??+?/??+?/:-??W??*

#%05> ?4????c??J??Y?5
d??YZ?@?
cJYeo??u+??N-?-*??ұ?$%
&(?*??f?a+
g?????	fa
h???)+?U?+??+?=??+?/M,??+?/N*-??W?? (?*)Y?)??i? 	j?
kl?W+?U?
*+?=+??W??????%&??mno|???pqxyxq|~x?j
"
?@2,??,?X,?x??	??????|??	?
s?????




© 2015 - 2024 Weber Informatics LLC | Privacy Policy